メニュー(menu)

  • オプションメニュー メニューボタンを押した時に上がってくるメニュー
    • Expanded Menu
    • Icon Menu
  • コンテキストメニュー 長押ししたりすると出てくるメニュー

  1. OptionMenu を作る
    • OnCreateOptionMenu関数
      • 初回のみ
    • OnPrepareOptionsMenu関数
      • 毎回。状態に応じてON/OFFしたりする場合に使う
  2. メニューのボタンを押した際の挙動を作る それぞれの関係は?
    1. OnMenuItemClickListener
    2. OnMenuItemSelected
    3. OnOptionsItemSelected
  3. MenuItemにOnMenuItemClickListenerを登録する
    • MenuItem.setOnMenuItemClickListener(OnMenuItemClickListener);


OnCreateOptionMenu(Menu menu)

オーバーライド

実行タイミングは、始めてメニューを開くとき
2回め以降は OnPrepareOptionMenu のみ

menu.add


itemId はあとで、OnOptionsItemSelectedで受け取れればいい?
menu.add(Menu.NONE, MENU_ID_MENU1, Menu.NONE, "Menu1");

リソースでメニューを作る

  1. res/menu/menu.xmlでメニューを作る
  2. getMenuInflator()で読み込む

OnOptionItemSelected(MenuItem item)

item.getItemId()で、選択されたIDを取得する
item.getitemId()
これをswitch文などで処理をして、所望の処理を行う。



public class SampleApp extends Activity {
   private Activity me;
    
   @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       me = this;
       setContentView(R.layout.main);
   }

   @Override
   public boolean onCreateOptionsMenu(Menu menu) {
       super.onCreateOptionsMenu(menu);
       MenuItem item1 = menu.add("Toast");
       MenuItem item2 = menu.add("Alert");
       OnMenuItemClickListener listener1 = new OnMenuItemClickListener(){
           public boolean onMenuItemClick(MenuItem item){
               Toast toast = Toast.makeText(me,"トーストです。",Toast.LENGTH_LONG);
               toast.show();
               return false;
           }
       };
       OnMenuItemClickListener listener2 = new OnMenuItemClickListener(){
           public boolean onMenuItemClick(MenuItem item){
               AlertDialog.Builder builder = new AlertDialog.Builder(me);
               builder.setMessage("アラートだよ。");
               builder.show();
               return false;
           }
       };
       item1.setOnMenuItemClickListener(listener1);
       item2.setOnMenuItemClickListener(listener2);
       return true;
   }

}
最終更新:2014年01月05日 21:55