最終更新:
moonlight_aska 2011年05月28日(土) 09:32:11履歴
オプションメニューが選択されると, Activity#onOptionsItemSelectedメソッド→Activity#onMenuItemSelectedメソッドの順にコールされる.
オプションメニューのハンドラはActivity#onMenuItemSelectedメソッドをオーバーライドして実装する.
Activity#onOptionItemSelectedメソッドをオーバーライドして, 上記と同様に実装してもよい.
以下のログは, オプションメニューを表示し, メニュー2およびサブメニュー2を選択したときのものである.

- OptMenu02.java
- onMenuItemSelectedメソッドをオーバーライドする.
- MenuItem#getItemIdメソッドでitemIdを取得し, どのメニューが選択されたかを判断する.
package com.moonlight_aska.android.optmenu02;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
public class OptMenu02 extends Activity {
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
super.onCreateOptionsMenu(menu);
// メニュー設定
menu.add(0, 10, 0, "メニュー1");
// アイコン付メニュー設定
menu.add(0, 20, 0, "メニュー2").setIcon(R.drawable.icon);
// サブメニュー設定
SubMenu sub = menu.addSubMenu("メニュー3");
sub.add(0, 31, 0, "サブメニュー1");
sub.add(0, 32, 0, "サブメニュー2");
// サブメニューをグループ化
sub.setGroupCheckable(0, true, true);
// サブメニュー1をデフォルトに設定
MenuItem item = sub.findItem(31);
item.setChecked(true);
return true;
}
@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
// TODO Auto-generated method stub
super.onMenuItemSelected(featureId, item);
switch (item.getItemId()) {
case 10: // メニュー1
Log.v("OptMenu", "Menu1");
break;
case 20: // メニュー2
Log.v("OptMenu", "Menu2");
break;
case 31: // サブメニュー1
Log.v("OptMenu", "SubMenu1");
break;
case 32: // サブメニュー2
Log.v("OptMenu", "SubMenu2");
break;
}
return true;
}
}
Activity#onOptionItemSelectedメソッドをオーバーライドして, 上記と同様に実装してもよい.
以下のログは, オプションメニューを表示し, メニュー2およびサブメニュー2を選択したときのものである.

コメントをかく