2012-08-23 152 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()