サブメニュー付きのメニューがあります。親アイテムは「オプション」であり、その子は「呼び出し」、「ナビゲート」、および「編集」です。これがメニュークリックを処理する私のアクティビティコードです。問題は、最初のサブメニューが常にイベントによって選択されることです。このコードでは、「Call」(最初の子アイテム)をクリックすると、onOptionsItemSelected()メソッドが選択されているR.id.record_editアイテムを登録します。「Call」メニュー項目のIDが「record_call」であるため、なぜこれが発生するのかわかりません。xmlでサブメニュー項目を切り替えてみましたが、最初のサブメニュー項目が登録される唯一の項目であり、常にR.id.record_editとして登録されます。私のコードの何が問題なのかわかりません。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.record_edit:
Intent intent = new Intent(this, EditRecordActivity.class);
myApp.setRecord(record);
Bundle b = new Bundle();
b.putBoolean("new", false);
b.putString("pageTitle", pageTitle);
b.putString("meta_universalid", meta_universalid);
intent.putExtras(b);
startActivity(intent);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
xmlメニュー
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/record_options"
android:showAsAction="ifRoom|withText"
android:title="..."
android:titleCondensed="Options"
android:enabled="true">
<menu>
<item
android:id="@+id/record_call"
android:showAsAction="ifRoom|withText"
android:title="@string/record_call"/>
<item
android:id="@+id/record_navigate"
android:showAsAction="ifRoom|withText"
android:title="@string/record_navigate"/>
<item
android:id="@+id/record_edit"
android:showAsAction="ifRoom|withText"
android:title="@string/record_edit"/>
</menu>
</item>
</menu>