我遇到以下問題 - 在我的應用程序中,有些事情發生後,我必須更新ActionBar
菜單。我使用appcompat庫中的ActionBarActivity
。是supportInvalidateOptionsMenu()的工作?
所以,我打電話supportInvalidateOptionsMenu()
功能,但菜單不會更新。 在調試模式下,我看到,onCreateOptionMenu方法正在調用,但菜單未更改。
我做錯了什麼?或者是否是ActionBarActivity
問題?
我遇到以下問題 - 在我的應用程序中,有些事情發生後,我必須更新ActionBar
菜單。我使用appcompat庫中的ActionBarActivity
。是supportInvalidateOptionsMenu()的工作?
所以,我打電話supportInvalidateOptionsMenu()
功能,但菜單不會更新。 在調試模式下,我看到,onCreateOptionMenu方法正在調用,但菜單未更改。
我做錯了什麼?或者是否是ActionBarActivity
問題?
在系統調用onCreateOptionsMenu()
之後,它會保留您填充的菜單實例,並且不會再次調用onCreateOptionsMenu()
,除非菜單由於某種原因而失效。但是,只應使用onCreateOptionsMenu()
來創建初始菜單狀態,而不是在活動生命週期中進行更改。
如果要根據活動生命週期中發生的事件修改選項菜單,可以在onPrepareOptionsMenu()
方法中執行此操作。該方法將當前存在的Menu對象傳遞給您,以便您可以對其進行修改,例如添加,刪除或禁用項目。 (Fragments還提供onPrepareOptionsMenu()
回撥。)
在Android 2.3.x及更低版本上,每次用戶打開選項菜單(按下菜單按鈕)時,系統都會調用onPrepareOptionsMenu()
。
在Android 3.0及更高版本上,當菜單項出現在操作欄中時,選項菜單被認爲始終打開。發生事件並且想要執行菜單更新時,必須致電invalidateOptionsMenu()
請求系統調用onPrepareOptionsMenu()
。
更多詳細信息click here
它的工作原理。謝謝! –
使用支持庫時,您還可以調用supportInvalidateOptionsMenu()以使菜單中的選項無效。 –