MenuItem.getItemId返回0而不是ItemId

Som*_*ent 2 android menu menuitem

我在Menus和MenuItems方面遇到了问题.每当我点击一个MenuItem,item.getItemId()总是返回0.有谁知道为什么?

public class MenuAct extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.event_activity, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    Log.d("event", "ItemSelected=" + item.getItemId());// always 0
    return true;
}

}
Run Code Online (Sandbox Code Playgroud)

/res/menu/event_activity.xml

<?xml version="1.0" encoding="utf-8"?>
<menu
xmlns:android="http://schemas.android.com/apk/res/android">
<item
    android:name="@+id/evt_createEvent"
    android:title="1" />
<item
    android:name="@+id/menu_evt_abortCreate"
    android:title="2" />
<item
    android:name="@+id/menu_evt_saveChanges"
    android:title="3" />
<item
    android:name="@+id/menu_evt_deleteEvent"
    android:title="4" />
</menu>
Run Code Online (Sandbox Code Playgroud)

Hei*_*upp 5

您没有为菜单项分配任何ID,因此Android无法识别它们并返回0.

如果您需要商品ID,则需要通过android:id属性提供:

<item android:id="@+id/AccountStuff"
      android:title="@string/menu_switch_account"/>
Run Code Online (Sandbox Code Playgroud)