我正在从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
如何解决?
答案 0 :(得分:1)
你应该在
中使用app:actionViewClass="android.support.v7.widget.SearchView"
而不是
android:actionViewClass="android.widget.SearchView"
我希望这会对你有所帮助。