タイトルだと解りにくいと思いますが、
アンドロイド本体に付いているメニューボタン(ハードウェアボタン)を押した時に表示するメニューを設定する方法を紹介します。
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;
}
}
【実行結果】

余談ですが、
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ボタンという新しい方法が採用されるようです。
