Android 在选项菜单中设置itemId

Android 在选项菜单中设置itemId,android,menuitem,Android,Menuitem,我有一个通过XML资源定义的菜单。现在,我添加一个菜单项 public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.mainmenu, menu); if(myCondition==true) { menu.add(0, 99, 0, "new Entry"); }

我有一个通过XML资源定义的菜单。现在,我添加一个菜单项

public boolean onCreateOptionsMenu(Menu menu) 
{
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.mainmenu, menu);

    if(myCondition==true)
    {
        menu.add(0, 99, 0, "new Entry");

    }

    return true;
}

在OnOptions ItemSelected(MenuItem项)中,我有一个case语句,它检查“99”,并执行我的操作。从技术上讲,这很好,我只是想知道什么数字,这里99,我应该选择?在XML中创建的项目通过资源文件获得了一个ID,我假设Android有一些逻辑来创建这些项目。我想知道生成的菜单项是否也会意外地得到99,然后它就不再工作了。最好的方法是什么?

我总是使用重载,只包含一个title参数,但是查看文档,似乎您无法传递任何参数


对于我来说,愚蠢的解决方案是创建一个xml资源布局菜单,其中包含我所需的所有按钮和id,然后我可以使用它们自己的唯一id在代码中引用它们,即使我根本没有使用该资源-字面上说是有效地注册随机生成的id。

您可以看到这个问题对于一个答案,那篇文章中的第一个答案说它可以是重复的,但我不明白的是,如果ID是重复的,我如何计算onOptions ItemSelected?指向该示例的第二个响应似乎不合适。可能示例代码已更改。ID重复的可能性很小。。。无论如何,如果您确实想处理这种情况,可以使用
setOnMenuItemClickListener(menuItemClickListener)
定义不同的
menuItemClickListener
如果我使用此重载(或无重载),如何评估OnOptions ItemSelected方法?您需要在那里检查ID,否则您不知道按下了什么菜单?我通常只是以功能性方式为每个菜单项添加不同的侦听器。但这是个人偏好。add方法返回对其创建的项的引用。你可以与之相比。