我正在尝试在我的应用程序中实现搜索功能。
我试图在工具栏中显示搜索图标,但不是单个搜索图标,而是显示多个图标。从menu.xml文件中显示一个图标,并从行setHasOptionsMenu(true);
显示其他图标。
如果我不使用“setHasOptionsMenu(true)
”行,则onOptionsItemSelectedMenu
方法将不会被调用,如果我不在menu.xml
文件中提供搜索图标,则搜索图标将不会显示。请让我知道如何摆脱这个问题。我努力没有果实。请帮我解决这个问题。
我当前的工具栏如下图所示:
我的menu.xml文件:
<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.blo.ifo.ifocusblogs.ActivityForFragments">
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:title="@string/action_settings"
app:showAsAction="never" />
<item android:id="@+id/search"
android:title="@string/search_label"
android:icon="@mipmap/ic_menu_search"
app:showAsAction="collapseActionView|ifRoom"
app:actionViewClass="android.support.v7.widget.SearchView" />
</menu>
答案 0 :(得分:0)
我遇到了同样的问题 my problem
这是我发现的解决方案: 添加&#34; menu.clear();&#34;到&#34; onPrepareOptionsMenu&#34;在MainActivity中 solution
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
menu.clear();
getMenuInflater().inflate(R.menu.main,menu);
MenuItem itemSearch = menu.findItem(R.id.action_search);
mSearchView = (SearchView) itemSearch.getActionView();
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
mSearchView.setSearchableInfo( searchManager.getSearchableInfo(getComponentName()));
mSearchView.setQueryHint(getResources().getString(R.string.searchProduct));
mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String s) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
if (TextUtils.isEmpty(newText)){
adapter.getFilter().filter("");
listview.clearTextFilter();
}else {
adapter.getFilter().filter(newText.toString());
}
return true;
}
});
return true;
}