7

我需要能夠更改android上的選項菜單(按下菜單按鈕時顯示的菜單),以便在一種情況下(例如在按鈕時),它將使用菜單中的特定菜單資源(XML文件,如/ res/menu/...),而在另一種情況下,使用不同的XML文件。android - 動態更改選項菜單,但通過從XML充氣

到目前爲止,我只看到沒有xml的例子(例如herehere),它們工作正常,但我希望能夠在某些情況下更改整個菜單。 我試圖修改我找到的解決方案,但我的試驗沒有任何工作。

如果可能,我寧願重新創建菜單,只有當它需要使用與當前菜單資源不同的菜單資源進行更新時。

請幫幫我。

回答

16

如果您想要在首次創建任何時間後更改選項菜單,則必須覆蓋onPrepareOptionsMenu()方法。

public boolean onPrepareOptionsMenu (Menu menu) {  
    menu.clear();  
    if (CASE_1 == 0) { 
     CASE_1 = 1; 
     getMenuInflater().inflate(R.menu.secondmenu, menu); 
    } 
    else { 
     CASE_1 = 0; 
     getMenuInflater().inflate(R.menu.firstmenu, menu); 
    }  
    return super.onPrepareOptionsMenu(menu); 
} 

其中CASE_1指的是根據您的要求顯示哪個菜單。

+0

這不是說它會在每次顯示菜單時重新創建,而不是onCreateOptionsMenu? –

+0

是的,它會被重新創建,你說它(我寧願重新創建菜單) –

+2

或者你可以根據需要讓每個菜單的單個xml和setVisiblity爲真或假。請參閱http://stackoverflow.com/questions/9030268/set-visibility-in-menu-programatically-android –