0

我的应用程序使用带有 Actionbar Sherlock 的选项卡导航在两个片段之间切换,每个片段都有自己的列表视图。此外,每个片段都有与之关联的自己的选项菜单,因此在我的两个片段类中,我使用了:

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

对于其中一个片段,重要的是根据用户在其列表中选择的项目,将其选项菜单中的某些选项显示为灰色。我通过调用:

@Override
public void onPrepareOptionsMenu(Menu menu){
        ...
}

在此方法中,我确定列表中的哪些项目已被检查。我注意到,当我在选项卡之间切换时,会立即调用 onPrepareOptionsMenu。然后下一次我按下菜单键时,不会调用 onPrepareOptionsMenu,并且菜单中的可用选项也不会更新。当我第二次点击菜单按钮时,一切正常并且可用选项得到更新。有没有我可以强制 onPrepareOptionsMenu 在标签切换后按下菜单键时被调用的方法?

我已经看到有关使用 invalidateOptionsMenu() 触发 onPrepareOptionsMenu 的说明,但是每次都覆盖菜单键事件似乎很混乱,而这个问题仅在用户第一次按下菜单键时出现。有没有更好的办法?

4

0 回答 0