Android ActionBar 重新创建选项菜单

11

在使用Android中的ActionBar时,如何刷新选项菜单?我已经尝试了隐藏和显示ActionBar,以及使用“getSupportActionBar()”获取其新实例。

我正在尝试实现一个基于用户状态动态更改的登录/注销按钮。

这是我的onCreateOptionsMenu方法。

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    if (loggedIn)
        menu.add(0, MENU2, 0, "Logout").setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
    else
        menu.add(0, MENU2, 0, "Login").setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
    menu.add(0, MENU1, 0, "Home").setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
    return super.onCreateOptionsMenu(menu);
}
谢谢!

可能是在Android 3.0中刷新操作栏的重复问题。 - CommonsWare
一般问题 - 当两个答案相同且回答时间几乎相同时,如何选择最佳答案是Stackoverflow的礼仪? - Solder Smoker
更好的答案(更详细,包含代码示例,链接等)胜过更快的答案。对于在这两个方面具有同等价值的答案...翻个硬币? - CommonsWare
3个回答

15

12

在您的FragmentActivity中调用invalidateOptionsMenu()

这也是一个公共方法,所以如果您想从片段刷新它,请调用getActivity().invalidateOptionsMenu()

顺便提一下,如果您使用SherlockActionBar,则需要从片段调用getSherlockActivity().invalidateOptionsMenu(),否则将出现异常。


10
invalidateOptionsMenu() 

需要API级别11或更高版本...

对于较低的API版本,请使用:

supportInvalidateOptionsMenu()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接