【问题标题】:Android ActionBar Recreate Options MenuAndroid ActionBar 重新创建选项菜单
【发布时间】:2014-02-13 03:36:58
【问题描述】:

在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);
}

谢谢!

【问题讨论】:

  • 一般问题 - 什么是 Stackoverflow 礼节,用于在两个答案相同并且彼此在大约相同的时间内回答时选择最佳答案?
  • 更好的答案(更多细节、代码示例、链接等)胜过更快的答案。对于这两个领域的同等价值的答案......掷硬币?

标签: android android-actionbar options-menu


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    在您的 FragmentActivity 调用中invalidateOptionsMenu()

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

    顺便说一句,如果您使用的是 SherlockActionBar,则需要致电 getSherlockActivity().invalidateOptionsMenu() 从片段中提取,否则你会得到一个异常。

    【讨论】:

      【解决方案3】:
      invalidateOptionsMenu() 
      

      需要 API 级别 11...

      对于较低的 API 使用:

      supportInvalidateOptionsMenu()
      

      【讨论】:

        猜你喜欢
        • 2014-05-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-05
        • 1970-01-01
        • 2013-02-19
        • 1970-01-01
        相关资源
        最近更新 更多