C/C++プログラマの管理者が, Androidプログラムにチャレンジ. AndroidプログラミングのTipsをメモっていく予定です.

オプションメニューが選択されると, Activity#onOptionsItemSelectedメソッド→Activity#onMenuItemSelectedメソッドの順にコールされる.

onMenuItemSelectedメソッドをオーバーライドする

オプションメニューのハンドラはActivity#onMenuItemSelectedメソッドをオーバーライドして実装する.
  • 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を選択したときのものである.





コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu


逆引き(基礎編)

画面表示/操作(49)

フラグメント(1)

逆引き(応用編)

Firebase(2)

AD



管理人/副管理人のみ編集できます