MenuItem.getItemId返回0而不是ItemId

|| 我在有关菜单和菜单项方面遇到问题。每当我单击
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;
}

}
/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>
    
已邀请:
您没有为菜单项分配任何ID,因此Android无法识别它们并返回0。 如果您需要商品ID,则需要通过
android:id
属性提供:
<item android:id=\"@+id/AccountStuff\"
      android:title=\"@string/menu_switch_account\"/>
    
先前的答案是正确的,但是如果您使用的是Eclipse,可能还不够。 请使用\“ Layout \”编辑器标签编辑menu.xml文件 然后你不工作的文件
<menu xmlns:android=\"https://schemas.android.com/apk/res/android\" xmlns:android=\"http://schemas.android.com/apk/res/android\">
    <item android:title=\"@string/button_exit\" android:visible=\"true\" android:enabled=\"true\" android:id=\"@+id/exitmenu\"></item>
</menu>
会变成
<menu xmlns:android=\"https://schemas.android.com/apk/res/android\" xmlns:android1=\"http://schemas.android.com/apk/res/android\">
    <item android1:title=\"@string/button_exit\" android1:visible=\"true\" android1:enabled=\"true\" android1:id=\"@+id/exitmenu\"></item>

</menu>
这可能是某处内部错误的结果。因此,您必须使用布局选项卡来执行此操作,否则getItemId返回零将继续遇到此类问题。 现在我的方法返回正确的ID
@Override
    public boolean onMenuItemSelected(int featureId, MenuItem item) {       
        // Handle item selection
        switch (item.getItemId()) {
            case R.id.exitmenu:
                finish();//Close the app
                return true;                
        }
        return super.onMenuItemSelected(featureId, item);
    }
    

要回复问题请先登录注册