1

おそらく私は明らかなことを見逃していますが、この例のように onCreateOptionsMenu(Menu menu) が呼び出されたときにのみメニューが作成され、入力され、これはメニューボタンを押した後にのみ呼び出されるようです.

アクティビティの作成時にメニューを設定したいのですが、どうすればそれを達成できますか?

アップデート:

おそらく、より良い質問は次のとおりです。Activity の Menu インスタンスを取得するにはどうすればよいですか?

ありがとう

4

1 に答える 1

2

これらの状態を保持するクラスを作成し、 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() が呼び出されるまで、メニュー (およびそこから作成された項目) を安全に保持し、必要に応じて変更を加えることができます。

http://developer.android.com/reference/android/app/Activity.html#onCreateOptionsMenu%28android.view.Menu%29

于 2012-10-02T21:00:43.353 に答える