1
我有一个搜索视图的操作栏,我有一个片段设置了选项菜单。在我的MainActivity SearchView工作正常,但在我的Fragment(我需要处理事件OptionMenuItem做一些事情),setHasOptionMenu后,然后SearchView无法正常工作。这里是我的代码错误在ActionBar中搜索查看
选项菜单中MainActivity
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
// Create SearchView
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
searchView = (SearchView) menu.findItem(R.id.action_search).getActionView();
searchView.setSubmitButtonEnabled(false);
searchView.setQueryHint("Search Here");
searchView.setSearchableInfo(searchManager
.getSearchableInfo(getComponentName()));
SearchView.OnQueryTextListener queryTextListener = new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String s) {
return false;
}
@Override
public boolean onQueryTextChange(String s) {
if(s.length() > 0){
Tab1.listadaptor.getFilter().filter(s);
Tab2.listadaptor.getFilter().filter(s);
}else{
pager.setAdapter(adapter);
if(SlidingTabLayout.userState){
pager.setCurrentItem(0);
}else{
pager.setCurrentItem(1);
}
}
return true;
}
};
searchView.setOnQueryTextListener(queryTextListener);
return super.onCreateOptionsMenu(menu);
}
OptionMenuItem在片段
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()){
//Do Something
}
return super.onOptionsItemSelected(item);
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
setHasOptionsMenu(true);
}
你能检查一下吗? http://stackoverflow.com/questions/31489109/android-searchview-in-toolbar/31490543#31490543,我给出了同样的答案 –
谢谢@HirenPatel的答案,但我的问题不是这样的。我需要在MainActivity中使用searchView,而不是在Fragment中重新创建,因为我的“pager”和“adapter”无法在Fragment中调用。我不重新创建actionBar,我只设置了HashOptionMenu并使用onOptionsItemSelected。我不知道为什么我的所有选项都能正常工作,但只有我的SearchView无法输入。我尝试将日志消息放入SearchView的代码中,当我单击SearchView图标时(无需输入),它会返回消息。也许错误是我的“寻呼机”和“适配器”。我认为它不能在片段中被调用,但现在我不知道我会做什么 –