我很好奇在針對API 11或更高版本時如何(如果有的話)onPrepareOptionsMenu(Menu)
(以及擴展名爲onPreparePanel(int, View, Menu)
)在Android 3.0+上使用。在Android 3.0+上使用`onPrepareOptionsMenu()`
我的思路如下:
的Activity
的ActionBar
從onCreateOptionsMenu(Menu)
接收其內容在這裏你可以膨脹的XML菜單資源,直接添加項目,或兩者的某種組合。活動的任何片段也將接收此調用,並可選擇執行相同操作。
要更新ActionBar上的項目,您可以保留Menu
實例或致電invalidateOptionsMenu()
,然後再結束調用onCreateOptionsMenu(Menu)
。
因此,是否onPrepareOptionsMenu(Menu)
然後只支持遺留應用程序不支持API 11或更新?
撥打getActionBar().hide()
和getActionBar().show()
是否可能觸發onPrepareOptionsMenu(Menu)
?
是否添加或刪除片段以某種方式觸發此?
我實際上得到不同的行爲。在調用'invalidateOptionsMenu()'後,測試3.2和4.1.1,我調用了'onCreateOptionsMenu()',然後調用'onPrepareOptionsMenu()'。我不認爲他們必須互相呼叫,但這是他們進來的順序。因此,我在'onPrepareOptionsMenu()'和onCreateOptionsMenu()'中保留了所有運行時更改,我只對該菜單進行充氣。在3.0之前,當用戶打開菜單時,它會自行處理,當> 3.0時,我需要刷新ActionBar時調用'invalidateOptionsMenu'。 – 2012-10-11 00:50:00