おそらく私は明らかなことを見逃していますが、この例のように onCreateOptionsMenu(Menu menu) が呼び出されたときにのみメニューが作成され、入力され、これはメニューボタンを押した後にのみ呼び出されるようです.
アクティビティの作成時にメニューを設定したいのですが、どうすればそれを達成できますか?
アップデート:
おそらく、より良い質問は次のとおりです。Activity の Menu インスタンスを取得するにはどうすればよいですか?
ありがとう
おそらく私は明らかなことを見逃していますが、この例のように onCreateOptionsMenu(Menu menu) が呼び出されたときにのみメニューが作成され、入力され、これはメニューボタンを押した後にのみ呼び出されるようです.
アクティビティの作成時にメニューを設定したいのですが、どうすればそれを達成できますか?
アップデート:
おそらく、より良い質問は次のとおりです。Activity の Menu インスタンスを取得するにはどうすればよいですか?
ありがとう
これらの状態を保持するクラスを作成し、 onCreateOptionsMenu() でそのクラスのプロパティから有効/チェック済みなどを設定します
class MenuStates{
public static boolean userDidPressTheButton;
public static boolean serverDidRespond;
public static boolean colorWasChanged;
}
void someEventHandler(){
MenuStates.userDidPressTheButton = true;
}
void onCreateOptionsMenu(){
myCheckBox.setChecked(MenuStates.userDidPressTheButton);
}
[編集]
メニューインスタンスを取得する理由は言いません。1 つのアプローチ:
Menu optsMenu;
...
// this is called once only before the end of the Activity onCreate().
onCreateOptionsMenu(Menu menu){
opstMenu = menu;
super.onCreateOptionsMenu(menu);
}
その後、必要に応じてメニューを変更します。onPrepareOptionsMenu() で「ポップアップする」作業を行います。
重要な理解は、onCreateOptionsMenu() と onPrepareOptionsMenu() の違いです。
[さらに編集]
自分で物事を完全に制御するには:
Menu optsMenu;
onCreate(){
openOptionsMenu() // the menu won't show in onCreate but onCreateOptionsMenu is shown
closeOptionsMenu()
}
onCreateOptionsMenu(Menu menu){
optsMenu = menu;
}
onPrepareOptionsMenu(Menu menu){
menu.clear();
for (int i=0;ioptsMenu.size();i++){
menu.add(optsMenu.get(i).getTitle());
}
return super.onPrepareOptionsMenu(menu);
}
ドキュメントから
次に onCreateOptionsMenu() が呼び出されるまで、メニュー (およびそこから作成された項目) を安全に保持し、必要に応じて変更を加えることができます。