Androidプログラマへの道 〜 Moonlight 明日香 〜 - サブメニュー付オプションメニューを表示する
オプションメニューのサブメニューを表示することもできる. 
ただし, 1階層のみで, サブメニューのサブメニューを表示することはできない.





サブメニューの設定

  • OptMenu02.java
    • Menu#addSubMenuメソッドで, サブメニューの親となるオプションメニューを設定する.
    • Menu#addメソッドでサブメニューを設定する.
    • Menu#setGroupCheckableメソッドで, サブメニューをグループ化し, サブメニューのどれか1つだけを選択できるようにする.
    • Menu#findItemメソッドで, 指定したItemIdを持メニューのインスタンスを取得する.
    • デフォルトとするサブメニューに, MenuItem#setCheckedメソッドでチェック状態をセットする.
package com.moonlight_aska.android.optmenu02;

import android.app.Activity;
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;
  }
}