我有一个带有子菜单的菜单。父项是“选项”,其子项是“呼叫”、“导航”和“编辑”。这是我处理菜单点击的活动代码。问题是第一个子菜单总是被事件选中。使用此代码,如果我单击“调用”(第一个子项),onOptionsItemSelected() 方法将注册被选中的 R.id.record_edit 项。我不知道为什么会发生这种情况,因为“呼叫”菜单项的 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>