首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >searchMenuItem.getActionView()返回null

searchMenuItem.getActionView()返回null
EN

Stack Overflow用户
提问于 2015-01-12 13:42:07
回答 1查看 746关注 0票数 1

getActionView()正在重排null。我做错什么了?

我正在扩展活动并使用android:minSdkVersion="11" android:targetSdkVersion="19"

代码语言:javascript
运行
复制
 <item
    android:id="@+id/search"
    android:actionViewClass="android.widget.SearchView"

    android:icon="@drawable/ic_action_search"
    android:showAsAction="collapseActionView|ifRoom"
    app:showAsAction="always"
    android:title="@string/search"/>



@Override
public boolean onCreateOptionsMenu(Menu menu) {
    super.onCreateOptionsMenu(menu);

    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.main, menu);
    searchItem = menu.findItem(R.id.search);
    mSearchView = (SearchView) searchItem.getActionView();
    mSearchView.setQueryHint("Search");

    return true;
}

清单

代码语言:javascript
运行
复制
<activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

            <meta-data
                android:name="android.app.searchable"
                android:resource="@xml/searchable" />

            <intent-filter>
                <action android:name="android.intent.action.SEARCH" />
            </intent-filter>
        </activity>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-12 14:07:07

我看到了app:showAsAction="always" -- app命名空间意味着您正在使用Appcompat v7库.

Appcompat库拥有在MenuCompat/MenuItemCompat类中将菜单项作为静态方法的方法(您应该像使用menu.methodXXX()一样使用MenuCompat.methodXXX(menu) )

现在,要在菜单中定义一个actionViewClass(以及在api中添加的其他属性,然后更新到11),您应该使用app命名空间来代替android命名空间。

所以android:actionViewClass应该变成app:actionViewClass

在代码中,应该使用MenuItemCompat.getActionView(searchItem)而不是searchItem.getActionView()

记住在菜单xml文件的根元素中添加名称空间app,如xmlns:app ="http://schemas.android.com/apk/res-auto"

还有一个小提示(当您使用11作为min时,您的代码应该工作正常,但是.)将android.widget.SearchView替换为android.support.v7.widget.SearchView,因为它(标准SearchView)在从11到最新的不同API版本上的工作方式不同(如果使用API > 11添加到SearchView上的方法,则会得到API 11中添加的方法)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27903361

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档