一个片段的菜单项显示在另一个片段中

Menu items of one fragment showing in another fragment

我需要避免在另一个片段中显示一个片段的菜单项。 那是在片段 A 中,我需要菜单项。在片段 B 中我不需要它。但是当我尝试从片段 A 过渡到片段 B 时,片段 A 的菜单项显示在片段 B 中。如何解决冲突?

Possible duplicate?

@Override public void onPrepareOptionsMenu(Menu menu) {
    MenuItem item = menu.findItem(R.id.action_search);
    item.setVisible(false);
}

在片段的 onCreate() 中

setHasOptionsMenu(true);

我也遇到了这个问题,我是这样解决的

在 onCreate 方法中执行此操作

 @Override
public void onCreate(Bundle savedInstanceState) {
    setHasOptionsMenu(true);
    super.onCreate(savedInstanceState);
}

在 onCreateOptionMenu 中执行此操作

  @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 中实现它。 Activity 和片段可以有自己的单独菜单,如 android 开发者网站所述 - https://developer.android.com/guide/topics/ui/menus.html#options-menu