1

我正在开发一个应该同时支持手机和平板电脑的应用程序。在这个应用程序中,我使用来自 android 的片段。

现在应用程序的流程就像

MainActivity --> Fragment1 --> 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);
}

现在它的手机布局工作得很好,但是当它涉及到平板电脑问题时。

这是我的截图。

片段 1 在此处输入图像描述

Fragment 1 和 Fragment 2 在键盘(平板模式)中按 9 时的组合。 在此处输入图像描述

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

在此处输入图像描述

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

4

1 回答 1

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);
}
于 2014-12-19T06:01:42.790 回答