メニュー画面の作成

Android アプリのメニュー画面は、端末の Menu ボタンを押したときに表示されるメニューです。

リソースの定義

メニュー画面も他の画面と同様に xml で定義します。
画面用のファイルは、main.xml ファイルに記述していましたが、メニュー画面は menu.xml ファイルに定義します。
プロジェクトの res フォルダの中に menu フォルダを新規作成し、その中に menu.xml ファイルを作成します。

<menu
    xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:id="@+id/menu1"
        android:title="メニュー1"
        android:icon="@android:drawable/ic_menu_agenda"
    />
    <item
        android:id="@+id/menu2"
        android:title="メニュー2"
        android:icon="@android:drawable/ic_menu_call"
    />
    <item
        android:id="@+id/menu3"
        android:title="メニュー3"
        android:icon="@android:drawable/ic_menu_compass"
    />
    <item
        android:id="@+id/menu4"
        android:title="メニュー4"
        android:icon="@android:drawable/ic_menu_set_as"
    />
    <item
        android:id="@+id/menu5"
        android:title="メニュー5"
        android:icon="@android:drawable/ic_menu_camera"
    />
    <item
        android:id="@+id/menu6"
        android:title="メニュー6"
        android:icon="@android:drawable/ic_menu_close_clear_cancel"
    />
</menu>

menu タグの中に、表示したいメニューアイテムの item タグを定義します。
title 属性には、メニューの表示タイトルを設定します。
icon 属性には、メニューに表示するアイコン (画像) を設定します。

メニュー作成・アイテム選択時のイベント

メニューの作成するには、メニューを作成する対象の Activity クラス (アプリのメイン画面等) で onCreateOptionMenu をオーバーライドし、その中で Menu を作成します。
このメソッドは、最初に Menu ボタンが押下されたときに一度だけ呼び出されるメソッドです。
メニューアイテム選択時のイベントは、onOptionsItemSelected メソッドの中で実装します。

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;

public class MenuSampleActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }

    // メニュー作成
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
    	getMenuInflater().inflate(R.menu.menu, menu);

    	return true;
    }

    // メニューアイテム選択イベント
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case R.id.menu1:
            // メニュー1選択時の処理
            break;
        }
        return super.onOptionsItemSelected(item);
    }

}

inflate メソッドの引数に先ほど作成した manu.xml のリソースを渡しています。