Java 调用InvalidateOptions菜单()会导致SearchView停止工作
我正在使用抽屉布局,无论何时打开或关闭,我都使用InvalidateOptions菜单()。问题在于,打开和关闭抽屉布局后,SearchView停止工作 类别1:Java 调用InvalidateOptions菜单()会导致SearchView停止工作,java,android,searchview,drawerlayout,Java,Android,Searchview,Drawerlayout,我正在使用抽屉布局,无论何时打开或关闭,我都使用InvalidateOptions菜单()。问题在于,打开和关闭抽屉布局后,SearchView停止工作 类别1: private DrawerLayout DrawerLayout; private ListView DrawerList; private ActionBarDrawerToggle DrawerToggle; private CharSequence DrawerTitle; private CharSequence Title
private DrawerLayout DrawerLayout;
private ListView DrawerList;
private ActionBarDrawerToggle DrawerToggle;
private CharSequence DrawerTitle;
private CharSequence Title;
.....
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
R.drawable.menu, R.string.app_name, R.string.hello) {
public void onDrawerClosed(View view) {
getActionBar().setTitle(Title);
invalidateOptionsMenu();
// onPrepareOptionsMenu()
}
public void onDrawerOpened(View drawerView) {
getActionBar().setTitle(DrawerTitle);
invalidateOptionsMenu();
// onPrepareOptionsMenu()
}
};
mDrawerLayout.setDrawerListener(DrawerToggle);
SearchView定义的类2:
@Override
public void onCreate (Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
getActivity().invalidateOptionsMenu();
// onPrepareOptionsMenu()
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.actionbar, menu);
searchView = (SearchView) menu.findItem(R.id.search).getActionView();
}
两个类都没有定义onPrepareOptions菜单()
具体来说,这就是停止工作的原因:
@Override
public boolean onQueryTextChange(String newText) {
adapter.getFilter().filter(newText);
return false;
}
其中adapter是ListView的适配器,getFilter转到实现filterable的baseadapter类。好的,我通过删除InvalidateOptions菜单()并添加super.ondrawerOpen而不是super.onDrawerClosed来修复它。我遇到了这样的情况,解决方案是在InvalidateOptions菜单()之后初始化搜索菜单项即使它已经初始化了
searchMenuItem = menu.findItem(R.id.search);
除此之外:
searchView = (SearchView) MenuItemCompat.getActionView(searchMenuItem);
请给我们一个堆栈跟踪。没有任何东西可看……停止工作->崩溃->意外异常->整个堆栈跟踪。我想找出错误发生的地方。另外,发布OnPrepareOptions功能表似乎很重要。好吧,应用程序没有崩溃,我也从来没有真正定义过OnPrepareOptions功能表。没有例外。我面临着同样的问题,但我不知道如何使用@TaylorCourtney解决方案。如果你能帮助我,我将不胜感激。