0
我有一個子菜單菜單。父項是「選項」,其子項是「呼叫」,「導航」和「編輯」。這是我處理菜單點擊的活動代碼。問題是第一個子菜單總是被事件選中。有了這段代碼,如果我點擊「Call」(第一個子項),onOptionsItemSelected()方法將註冊選中的R.id.record_edit項。我不知道爲什麼會發生這種情況,因爲「調用」菜單項的ID爲「record_call」。我試過在xml中切換子菜單項,但是第一個子菜單項是唯一註冊的子菜單項,並且它始終註冊爲R.id.record_edit。不知道我的代碼有什麼問題。android - 子菜單點擊不選擇正確的項目
@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>
嗯。我剛創建了一個空白的應用程序項目,並做到了這一點,並像它應該那樣工作。我無法分辨我的主要應用程序代碼有什麼不同。 – David 2013-03-15 18:41:34
你最好粘貼你的整個oncreateoptionmenu和onoptionmenuitemseleced ..可能是可以揭示問題 – stinepike 2013-03-16 03:25:56