gpt4 book ai didi

java - 调用 invalidateOptionsMenu() 会导致 SearchView 停止工作

转载 作者:太空狗 更新时间:2023-10-29 14:57:26 24 4
gpt4 key购买 nike

我正在使用 DrawerLayout,并且在打开或关闭时使用 invalidateOptionsMenu()。问题在于打开和关闭 DrawerLayout 后 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 定义的 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 转到实现 filterable 的 baseadapter 类。

最佳答案

好的,我通过删除 invalidateOptionsMenu() 并添加 super.onDrawerOpened 和 super.onDrawerClosed 来修复它。

关于java - 调用 invalidateOptionsMenu() 会导致 SearchView 停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30087811/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com