menu.findItem使用v7操作栏返回null

时间:2016-08-22 07:39:41

标签: java android

我正在从Android Hive了解Android Studio中的操作栏。不幸的是,我使用v7动作栏和androidhive使用内置动作栏可能会有所不同。问题出在搜索视图部分。

MainActivity.java

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.mainmenu, menu);

    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
    System.out.println("Search Manager : "+searchManager);
    SearchView searchView = (SearchView) menu.findItem(R.id.action_search).getActionView();
    System.out.println("Search View : "+searchView);
    //searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));

    return super.onCreateOptionsMenu(menu);
}

mainmenu.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
    android:id="@+id/action_search"
    android:icon="@drawable/ic_action_search"
    android:title="Search"
    app:showAsAction="always"
    android:actionViewClass="android.widget.SearchView" />
</menu>

命令行说searchView为null。 我已将android:actionViewClass更改为app:actionViewClass,但它说android.widget.SearchView无法强制转换为android.support.v7.widget.SearchView

有关完整代码,您可以看到here

如何解决?

1 个答案:

答案 0 :(得分:1)

你应该在

中使用
app:actionViewClass="android.support.v7.widget.SearchView"

而不是

android:actionViewClass="android.widget.SearchView" 

我希望这会对你有所帮助。