Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 调用InvalidateOptions菜单()会导致SearchView停止工作_Java_Android_Searchview_Drawerlayout - Fatal编程技术网

Java 调用InvalidateOptions菜单()会导致SearchView停止工作

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

我正在使用抽屉布局,无论何时打开或关闭,我都使用InvalidateOptions菜单()。问题在于,打开和关闭抽屉布局后,SearchView停止工作

类别1:

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解决方案。如果你能帮助我,我将不胜感激。