具有相同菜单的片段在相同的布局上会导致重复的菜单项

mr_*_*wan 12 android android-layout android-menu android-fragments

我有一个有2个片段的布局.这些片段使用相同的菜单,因为我有另一个布局只有其中一个(用于小屏幕设备).

我的问题是菜单中显示每个片段的菜单项,因为它们来自同一个菜单,所以它们彼此重复.我需要只显示一个片段的菜单,而不是两者.无论如何我可以存档吗?

或者,可能更好,创建2个不同的菜单.一个用于仅具有这些片段之一的布局(用于小屏幕设备),另一个用于具有两个片段的布局.我怎么能这样做?

编辑:我使用ActionBarSherlock库来实现向后兼容,我在Android 3.0模拟器上测试它.

mr_*_*wan 24

我找到了不太好的解决方案.在每个片段的onCreateOptionsMenu()中,调用menu.clear()以在菜单膨胀之前删除任何现有的菜单项.

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

}
Run Code Online (Sandbox Code Playgroud)

这将发布未来的问题.我可能决定为每个片段使用不同的菜单,每个菜单共享菜单项.我想我们可以在onCreateOptionsMenu()上操作菜单,但是目前我不知道如何在使用MenuInflater对菜单进行膨胀之前获取与该片段相关联的菜单项.


alo*_*dev 0

你调用createOptionMenu的super方法吗?

  • 那么可能会显示所有选项菜单。

  • 我认为这会让问题变得更糟;-) (4认同)