【发布时间】:2015-09-24 04:08:24
【问题描述】:
我想在片段的操作栏中使用搜索视图,片段中的代码就像
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
menu.clear();
getActivity().getMenuInflater().inflate(R.menu.menu_search, menu);
SearchView searchView = (SearchView) MenuItemCompat.getActionView(menu.findItem(R.id.action_search));
searchView.setIconifiedByDefault(true);
super.onCreateOptionsMenu(menu, inflater);
}
菜单搜索
<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.example.sinyuk.zhihu.Search.SearchResultActivity">
<item
android:id="@+id/action_search"
android:orderInCategory="90"
android:title="@string/action_search"
android:actionViewClass="android.support.v7.widget.SearchView"
app:showAsAction="ifRoom"/>
我的活动代码是:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
...
return true;
}
menu_main
<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=".MainActivity">
...
<item
android:id="@+id/action_settings"
android:orderInCategory="83"
android:title="@string/action_settings"
app:showAsAction="never" />
问题是我无法获取搜索视图,它原来是一个空对象。 但是片段中的菜单视图实际上是重新创建的,似乎新菜单没有传递给
MenuItemCompat.getActionView(menu.findItem(R.id.action_search));
所以请帮助我:P
【问题讨论】:
-
使用
app命名空间app:actionViewClass="android.support.v7.widget.SearchView" -
你在片段
onCreate()中打电话给setHasOptionsMenu(true)了吗?
标签: android android-fragments android-actionbar searchview