我假设有三个片段,并希望为每个片段显示单独的选项菜单以及基本共性的常用菜单。我在片段中的onCreateView()中设置setHasOptionMenu(true)并覆盖onOptionItemCreated()。它成功显示菜单。现在我想隐藏/删除从片段添加的菜单作为片段一个菜单可见也是片段B并且它只添加新菜单购买没有删除片段破坏上的旧菜单。请帮忙!
答案 0 :(得分:1)
在要隐藏某些项目的Fragment
中,执行以下操作 -
@Override
public void onPrepareOptionsMenu(Menu menu) {
MenuItem item=menu.findItem(R.id.action_search);
item.setVisible(false);
...
}
答案 1 :(得分:0)
这种情况正在发生,因为onCreateView()
没有被再次调用,我们也不能依赖onResume()
,因为对于片段,它与活动生命周期紧密相关。针对这种情况的一个简单方法是使用replace
代替add
来使用片段事务。这将迫使片段娱乐,因此应该在这里工作。
<强> [编辑] 强>
或者,您可以尝试将菜单代码放在onResume()
的片段中,严格使用replace()
代替add()
进行片段交易。
答案 2 :(得分:0)
活动:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
menu.findItem(R.id.action_id_here).setVisible(false);
return true;
}
For Fragment:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
menu.findItem(R.id.action_id_here).setVisible(false);
}