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圖標時(無需輸入),它會返回消息。也許錯誤是我的「尋呼機」和「適配器」。我認爲它不能在片段中被調用,但現在我不知道我會做什麼 –