Careless Me

我在百度知道上提了一个问题

如图我在menu.xml里试图加一个search的按钮,但我从网页上复制了图中第二个item里的代码,运行的时候,这个item却总是出现在overflow(下拉菜单)里面,不出现在action bar。而我用手打出第一个item里的代码之后,却可以在action bar上显示。这是为什么?两段代码完全一样啊。

这两段代码我调了很久。最后看来看去,发现这个段代码并不是「完全一样」。

showAsAction属性之前的命名空间,一个是android,一个是app。结果就导致没有使用命名空间的下面的item无效。

那为什么其他的android打头的代码有效?来看看完整的menu头:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context="com.larry.projecty.MainActivity" >

android对应的空间是/apk/res/android,而app对应/apk/res-auto.而android developers上,也就我复制的那段代码的来源,只用了这一个命名空间:

<menu xmlns:android="http://schemas.android.com/apk/res/android">

我TM已经糊涂了。I don't get the fuck.好吧,我就用app做命名空间好了。草。

 

草。搞这些SB代码,这个JB细节搞了一晚上,结果这只是一堆错误中的一个。想弄懂所有一切,哪有那么多精力和时间??真JB累。

 

干。

 ----------------------------------------------

冷静了一会儿,想起来原来为了支持2.x系统而用自己的命名空间。

查了一下,网上说:

「这是告诉系统,showAsAction使用library的XML attributes

也就是说在用其他的library的时候要用自己的命名空间。

此外还有:

yourapp:actionViewClass="android.support.v7.widget.SearchView"

yourapp:actionProviderClass="android.support.v7.widget.ShareActionProvider"

 

我操,一箭双雕,正好解决了为什么得不到search view的问题了。

除了在xml里改命名空间,在MainActivity.java里也要改import哦,改成:

import android.support.v7.widget.SearchView;

 

操,好高兴。

可怜的程序狗啊。

 

参考:

http://blog.csdn.net/tianjf0514/article/details/13278539

posted @ 2014-05-11 21:42  LarryLawrence  阅读(226)  评论(0编辑  收藏  举报