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>