我需要避免在另一个片段中显示一个片段的菜单项。 这是片段A我需要菜单项。在片段B中我不需要它。但是当我尝试从片段A转换到片段B时。片段A的菜单项显示在片段B中。如何解决冲突?
答案 0 :(得分:7)
我也遇到了这个问题,我这样解决了这个问题
在onCreate方法中执行此操作
@Override
public void onCreate(Bundle savedInstanceState) {
setHasOptionsMenu(true);
super.onCreate(savedInstanceState);
}
在onCreateOptionMenu中执行此操作
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
menu.clear();
}
答案 1 :(得分:2)
在您不想显示任何菜单选项的片段中,您需要在onCreate()中setHasOptionsMenu(false);
,
像这样:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(false);
}
但是,您要隐藏的菜单属于MainActivity。这就是它总是被展示的原因。由于您想要在Fragment级别控制菜单,我的建议是从Activity中删除菜单代码并在Fragment中实现它。活动和片段可以有各自独立的菜单,如android开发者网站中所述 - https://developer.android.com/guide/topics/ui/menus.html#options-menu
答案 2 :(得分:0)
@Override public void onPrepareOptionsMenu(Menu menu) {
MenuItem item = menu.findItem(R.id.action_search);
item.setVisible(false);
}
和片段的onCreate()
setHasOptionsMenu(true);