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

问题描述 投票:3回答:3

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

android android-fragments menuitem
3个回答
7
投票

我也遇到了这个问题,我通过这样做解决了这个问题

在onCreate方法中执行此操作

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

在onCreateOptionsMenu中执行此操作

  @Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    menu.clear();
}

2
投票

在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中所述


0
投票

Possible duplicate?

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

并在你片段的onCreate()中

setHasOptionsMenu(true);
© www.soinside.com 2019 - 2024. All rights reserved.