10

在Android中使用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);
}

谢谢!

4

3 回答 3

13

使用invalidateOptionsMenu()使菜单无效,然后将代码放入onPrepareOptionsMenu区域。

于 2012-08-23T22:06:52.913 回答
12

在您的 FragmentActivity 调用中invalidateOptionsMenu()

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

顺便说一句,如果您使用的是 SherlockActionBar,则需要getSherlockActivity().invalidateOptionsMenu() 从片段中调用,否则会出现异常。

于 2012-08-23T22:08:09.877 回答
9
invalidateOptionsMenu() 

需要 API 级别 11...

对于较低的 API 使用:

supportInvalidateOptionsMenu()
于 2014-02-12T19:31:39.770 回答