【Android】メニューを押した時のメニューボタン(OptionsMenu)を設定する


タイトルだと解りにくいと思いますが、
アンドロイド本体に付いているメニューボタン(ハードウェアボタン)を押した時に表示するメニューを設定する方法を紹介します。


onCreateOptionsMenuメソッドでメニュー項目を設定する


Activityの中にonCreateOptionsMenuメソッドを作成します。
Menuクラスのaddメソッドを使い表示するメニュー項目を追加します。

public boolean onCreateOptionsMenu( Menu menu ){
	//項目の設定
	menu.add( 【メニューのグループ】,【メニューのID】,【メニューのソート順】, 【表示する文字列】 );
	return super.onCreateOptionsMenu(menu);
}



addメソッドの引数で
・グループ
・ID
・ソート順
・表示する文字列
を指定します。


メニューボタンを押された時の処理をonOptionsItemSelectedメソッドの中に書く


ボタンが押された時はonOptionsItemSelectedメソッドが呼び出されます。
MenuItemクラスのgetTitleでボタンの項目名、getItemIdでボタンのIDが取得できます。

あとはIDを調べてswitch文なりif文なりで分岐すればボタンが押された時の処理が実装できますね。
public boolean onOptionsItemSelected( MenuItem mi ){

	switch( mi.getItemId() ){
    case 0:
      【ボタンID:1が押された時の処理】
      break;
    case 1:
      【ボタンID:2が押された時の処理】
      break;
  }
  
	return true;
}



サンプルプログラム


メニューボタンを3つ表示させるサンプルプログラムです。
※importは省略
public class Sample20120805Activity extends Activity {

	TextView tv;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        LinearLayout ll = new LinearLayout(this);
        setContentView(ll);
        tv = new TextView(this);
        tv.setText("MENUボタンを押して名前を選択して下さい");
        ll.addView(tv);

    }
    //メニュー作成
    public boolean onCreateOptionsMenu( Menu menu ){

    	//項目の設定
    	menu.add(Menu.NONE,0,0,"博麗霊夢");
    	menu.add(Menu.NONE,1,1,"霧雨魔理沙");
    	menu.add(Menu.NONE,2,2,"東風谷早苗");

    	return super.onCreateOptionsMenu(menu);
    }

  //メニューボタンが押された時
    public boolean onOptionsItemSelected( MenuItem mi ){

    	String name = (String)mi.getTitle();
    	int id      = mi.getItemId();
    	tv.setText("ID:" + id + "―" + name + "が選択されました。");
    	return true;
    }

}


【実行結果】
【Android】メニューを押した時のメニューボタン(OptionsMenu)を設定する01 【Android】メニューを押した時のメニューボタン(OptionsMenu)を設定する02



余談ですが、
ITmediaのニュースによるとGoogle社から

Android 2.3まではハードウェアボタンとして提供されてきた「Menu」ボタンはAndroid 4.0には存在しない。GoogleはMenuという発想を捨て、ActionボタンおよびOverflowボタンに置き換えるよう開発者に勧める。

このような告知が出ているみたいです。
ソース元:http://www.itmedia.co.jp/news/articles/1201/27/news059.html

もうハードウェアボタンのメニューボタンはなくなってしまうそうですね。
Actionボタンという新しい方法が採用されるようです。


関連記事

コメントは受け付けていません。