メニュー画面の作成
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 のリソースを渡しています。