【发布时间】:2015-07-17 05:50:44
【问题描述】:
我正在使用 DrawerLayout,并且无论何时打开或关闭它,我都会使用 invalidateOptionsMenu()。问题是在打开和关闭 DrawerLayout 后 SearchView 停止工作。
第一类:
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 定义 Class2:
@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();
}
两个类都没有定义 onPrepareOptionsMenu()
具体来说,这是停止工作的原因:
@Override
public boolean onQueryTextChange(String newText) {
adapter.getFilter().filter(newText);
return false;
}
adapter 是 ListView 的适配器,getFilter 指向实现可过滤的 baseadapter 类。
【问题讨论】:
-
请给我们一个堆栈跟踪
-
没什么可看的......
-
停止工作 -> 崩溃 -> 意外异常 -> 大量堆栈跟踪。我想知道错误发生在哪里。再加上
onPrepareOptionsMenu,好像很重要。 -
好的,应用程序没有崩溃,我从来没有真正定义过onprepareoptionsmenu。没有例外。
-
我面临同样的问题,但我不知道如何使用@TaylorCourtney 解决方案。如果您能帮助我,我将不胜感激。 *.com/questions/54756799/…
标签: java android searchview drawerlayout