XMLからオプションメニューを作る

情報源:android-beginners Re: A few menu questions...

XMLでメニューを作成する場合、MenuItem.getItemIdで得られる値はメニューボタンのR.id以下での値と一致する。

item.getTitle()とかいうボタンのタイトルを返すメソッドもありますが、これを押されたボタン判定に使うとしたら、メニューの項目がアプリ作成時点で分かってない場合とかですかね? Webから何か読み込んで云々とか。少なくともXMLでメニューを作成する場合はR.id...の方が分かりやすいかと。

Activity

	/* メニュー内容を生成 */
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		MenuInflater inflater = getMenuInflater();
		inflater.inflate(R.menu.options_menu, menu);
		return true;
	}

	/*ボタンを押した時の動作*/
	@Override
	public boolean onMenuItemSelected(int featureId, MenuItem item) {
		int id = item.getItemId();

		//XML中のメニューボタンにアクセスするにはR.id以下を利用する
		if (id == R.id.searchAgain) {
			//TODO 再検索
			Log.d(TENKO, "itemId: 0");
		}else if (id == R.id.orderMadeSearch){
			//TODO 指定して検索
		}

		return true;
	}

XML

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
	<item android:id="@+id/searchAgain" android:title="再検索"
		android:icon="@drawable/search_again" />
	<item android:id="@+id/orderMadeSearch" android:title="地域を指定して検索"
		android:icon="@drawable/order_search" />

</menu>