如何从片段中删除菜单按下android

时间:2014-12-19 05:46:57

标签: android android-fragments android-actionbar menuitem fragment-backstack

我正在开发一个应该支持手机和平板电脑的应用程序。 在这个应用程序中我使用的是Android的片段。

现在应用程序的流程就像

MainActivity - >片段1 - > Fragment2

在这个应用程序中,我想要一个菜单​​项,它应该只显示在Fragment2中以及活动的菜单项。

所以我尝试了一个解决方案,比如在MainActivity和Fragment2中添加全局菜单项,用Fragment2特定菜单替换整个MainActivity菜单。

setHasOptionsMenu(true);

在onCreateView中,并实现此方法。

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    inflater.inflate(R.menu.menu_f, menu);
    super.onCreateOptionsMenu(menu,inflater);
}

现在它的工作对于手机布局来说非常好,但是当出现平板电脑问题时会出现。

这是我的ScreenShots。

片段1 enter image description here

在按键9(平板电脑模式)中按9时,片段1和片段2组合。 enter image description here

最后当我再次按9回到pHone视图时,它显示了我额外的菜单项。

enter image description here

我刚在Image中标记了一个额外的菜单项。那么为什么我来了,我该如何解决呢?

1 个答案:

答案 0 :(得分:0)

您需要在fragment 1

中隐藏这样的菜单组
@Override
public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setHasOptionsMenu(true);
}

它会打电话给onPrepareOptionsMenu,您可以在其中隐藏由fragment2

添加的菜单组
@Override
public void onPrepareOptionsMenu(Menu menu) {
        super.onPrepareOptionsMenu(menu);
        menu.setGroupVisible(0, false);
}