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

时间:2017-04-12 05:54:03

标签: android android-fragments menuitem

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

3 个答案:

答案 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)

Possible duplicate?

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

和片段的onCreate()

setHasOptionsMenu(true);