2012-08-23 115 views
9

在Android中使用ActionBar时,如何刷新选项菜单?我试图隐藏和显示栏,以及与getSupportActionBar()获取它的新实例“Android ActionBar重新创建选项菜单

我想实现一个登录/注销按钮,将根据用户的状态动态更改。

这里是我的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); 
} 

谢谢!

+0

可能重复[刷新操作栏在Android 3.0的(http://stackoverflow.com/问题/ 6602534 /刷新行动吧在android-3-0) – CommonsWare

+0

一般问题 - 什么是Stackoverflow礼仪选择最佳答案,当两个答案是相同的,并在约彼此相同的时间回答好? –

+0

更好的答案(更多细节,代码示例,链接等)胜过更快的答案。对于两个领域的同等优点的答案...翻转一枚硬币? – CommonsWare

回答

11

在您的通话FragmentActivity invalidateOptionsMenu()

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

顺便说一句,如果你使用SherlockActionBar你需要调用getSherlockActivity().invalidateOptionsMenu() ,否则你会得到一个异常。

7
invalidateOptionsMenu() 

需要API级别11 ...

较低的API使用:的

supportInvalidateOptionsMenu()