我正在将我最初编写的应用程序转换为目标 v2.2,以便它使用 v4 兼容性库和 ActionBarSherlock 以 v4 为目标。
我正在研究 ActionBar
选项菜单和子菜单,并尝试弄清楚如何以独特的方式识别子菜单项。
例子...
@Override
public boolean onCreateOptionsMenu(Menu menu) {
SubMenu mediaSubMenu = menu.addSubMenu("Media");
mediaSubMenu.add("Videos");
mediaSubMenu.add("Music");
}
这很好,我得到了“媒体”的 ActionBar
菜单项,当我单击时,我看到了“视频”和“音乐”子菜单项。我的问题是我确定被单击的子菜单项的唯一方法如下...
@Override
public boolean onOptionsItemSelected(MenuItem item) {
super.onOptionsItemSelected(item);
if (item.getTitle().equals("Music")) {
// Do something
return true;
}
return false;
}
我突然想到我可能有另一个同名的子菜单项,例如“设置”->“音乐”。
如何区分这两者?我忍不住觉得我在这里遗漏了一些非常简单的东西。
最佳答案
为您的菜单项设置 id
mediaSubMenu.add(Menu.NONE, R.id.media_videos, Menu.NONE, "Videos")
你可以在资源文件中定义id(比如res/values/ids.xml)
<?xml version="1.0" encoding="utf-8"?>
<resources>
<item name="media_videos" type="id"/>
<item name="other_videos" type="id"/>
</resources>
然后你可以使用
switch(item.getItemId()) {
case R.id.media_videos:
...
case R.id.other_videos:
...
}
我还建议使用菜单 xml 来设置操作栏数据。
关于android - 唯一标识 ActionBar 选项菜单项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15318064/