7

アンドロイドのオプションメニュー(メニューボタンを押したときに表示されるもの)を変更する必要があるため、あるケースではボタンが押されている場合)、メニューの特定のメニューリソース(/ res/menu/...のようなXMLファイル)を使用し、別の場合は別のXMLファイルを使用します。アンドロイド - オプションメニューを動的に変更するが、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

または必要に応じて、trueまたはfalseに各メニューitenmの単一のxmlとsetVisiblityを持つことができます。これを参照してくださいhttp://stackoverflow.com/questions/9030268/set-visibility-in-menu-programatically-android –

関連する問題