ActionBarCompat + tabs:切换时删除片段菜单项?

时间:2013-08-13 13:29:27

标签: android tabs android-actionbar menuitem android-actionbar-compat

对于每个片段,我将添加菜单项以向用户提供与上下文相关的操作。但是当切换到另一个片段时,菜单项仍然存在。所以我可以从菜单中每个片段的所有选项结束。

如何清理菜单项只包含活动菜单中设置的菜单项?

我读到了invalidateOptionMenu()和onPrepareOPtionmenu(),但我并没有真正了解它们是如何工作的。 实施它的正确方法是什么?

无论如何,当片段不再显示时,如何删除片段链接的菜单项不是原生的Android行为?

编辑,如果说明不够清楚。

  • 我有一个活动支持Navigation_Mode_Tabs,其中设置作为全局菜单项。
  • 我启动了添加itemA1和itemA2的fragA。所以我有设置,itemA1,itemA2 。到目前为止,这么好。
  • 然后我切换到添加自己的itemB的fragB。在这里,我在菜单中有设置,itemA1,itemA2,itemB

为什么itemA1和itemA2卡住了?如何删除它们?

编辑2:我已尝试从此post进行另一个制表设置,突然显示菜单项似乎已正确删除! 使用删除(R.id.container,片段)与Google推荐的{strong> onDetach()/ onAttach()相比,我们可以看到这一点{{ 3}}

我正在看这个,可能明天我会更新。如果你知道这一点,请分享:)

2 个答案:

答案 0 :(得分:0)

你可以在每个活动上设置menuinflater。

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.demo, menu);
    return true;
}

答案 1 :(得分:0)

您应该将TabListener添加到标签页,然后在supportInvalidateOptionsMenu()方法中调用onTabSelected()。它会导致呼叫onCreateOptionsMenu()。您应该在活动中覆盖它,并为选定的片段扩充菜单。如果您从代码中添加菜单项,请不要忘记清除以前片段的菜单。