2014-10-07 88 views
1

這工作得很好,但如果我在不同的活動,並使用後退按鈕,它不會更新操作欄,因爲活動已創建,它不會更新操作欄。已經嘗試在on_create方法上使用supportInvalidateOptionsMenu(),但它不起作用。刷新操作欄項圖標

public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    Cursor cursor = messages.getMessages(); 
    if(cursor.getCount()>0){ 
     inflater.inflate(R.menu.actionbar1, menu); 
    }else{ 
     inflater.inflate(R.menu.actionbar2, menu); 
    } 
    return super.onCreateOptionsMenu(menu); 
} 
+2

'InvalidateOptionsMenu()'將調用onPrepareOptionsMenu而不是onCreateOptionsMenu。確保你也重寫/編碼該方法。 – 2014-10-07 08:36:59

回答

2

至於onCreateOptionsMenu(Menu)狀態的文檔:

這只是調用一次,第一次被 顯示選項菜單。要在每次顯示菜單時更新菜單,請參閱 onPrepareOptionsMenu(菜單)。

因此,返回已經創建的Activity不會再次觸發onCreateOptionsMenu(Menu)。 我建議你做的只是創建一個包含所有菜單項的菜單,並根據一個或多個標誌在onPrepareOptionsMenu(Menu)中選擇性地激活/停用它們。然後將invalidateOptionsMenu()放入onResume(),每次顯示活動時都調用它。

希望它可以幫助

1

只要您需要更改圖標,請嘗試撥打invalidateOptionsMenu。 它會破壞你的菜單並通過呼叫onPrepareOptionsMenu重新給它們充氣。