在 main activity 中执行 setVisible(true) 时隐藏在片段中的 MenuItem 不可见
MenuItem hidden in fragment not visible when doing setVisible(true) in main activity
我已经在这个问题上卡住了很长一段时间了。在我的代码中,我有一个片段,我不想在其中显示搜索菜单项。为此,我在片段
中执行此操作
里面onCreate
setHasOptionsMenu(true);
然后
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
this.menu = menu;
MenuItem search = menu.findItem(R.id.action_search);
search.setVisible(false);
}
这完全符合预期并隐藏了项目。现在,当我返回时,主 activity 的 onBackPressed()
被调用,然后我执行此操作
@Override
public void onBackPressed() {
// code skipped
invalidateOptionsMenu();
}
这调用了主activity里面的onCreateOptionsMenu
,如下
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
item = menu.findItem(R.id.action_search);
item.setVisible(true);
//code skipped
}
调用了 onCreateOptionsMenu
函数,但不幸的是 menuItem
仍然隐藏,我看不到搜索菜单。
有人可以帮忙吗,可能是什么问题?提前致谢!!
方法 onCreateOptionsMenu
仅在创建 activity(或片段)时调用。使用 onPrepareOptionsMenu
设置菜单项的可见性。 invalidateOptionsMenu
调用 onPrepareOptionsMenu
,而不是 onCreateOptionsMenu
。
我已经在这个问题上卡住了很长一段时间了。在我的代码中,我有一个片段,我不想在其中显示搜索菜单项。为此,我在片段
中执行此操作里面onCreate
setHasOptionsMenu(true);
然后
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
this.menu = menu;
MenuItem search = menu.findItem(R.id.action_search);
search.setVisible(false);
}
这完全符合预期并隐藏了项目。现在,当我返回时,主 activity 的 onBackPressed()
被调用,然后我执行此操作
@Override
public void onBackPressed() {
// code skipped
invalidateOptionsMenu();
}
这调用了主activity里面的onCreateOptionsMenu
,如下
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
item = menu.findItem(R.id.action_search);
item.setVisible(true);
//code skipped
}
调用了 onCreateOptionsMenu
函数,但不幸的是 menuItem
仍然隐藏,我看不到搜索菜单。
有人可以帮忙吗,可能是什么问题?提前致谢!!
方法 onCreateOptionsMenu
仅在创建 activity(或片段)时调用。使用 onPrepareOptionsMenu
设置菜单项的可见性。 invalidateOptionsMenu
调用 onPrepareOptionsMenu
,而不是 onCreateOptionsMenu
。