微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

MenuItem.getItemId返回0而不是ItemId

如何解决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);
    }
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。