我需要避免在另一个片段中显示一个片段的菜单项。这是片段A我需要菜单项。在片段B中我不需要它。但是当我尝试从片段A转换到片段B时,片段A的菜单项显示在片段B中。如何解决冲突?
我也遇到了这个问题,我通过这样做解决了这个问题
在onCreate方法中执行此操作
@Override
public void onCreate(Bundle savedInstanceState) {
setHasOptionsMenu(true);
super.onCreate(savedInstanceState);
}
在onCreateOptionsMenu中执行此操作
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
menu.clear();
}
在Fragment中你不想显示任何菜单选项,你需要在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中所述
@Override public void onPrepareOptionsMenu(Menu menu) {
MenuItem item = menu.findItem(R.id.action_search);
item.setVisible(false);
}
并在你片段的onCreate()中
setHasOptionsMenu(true);