我正在将我最初编写的应用转换为目标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;
}
虽然我可能有另一个具有相同名称的子菜单项,但我发生这种情况,例如“设置” - > “音乐”。
我如何区分这两者?我不禁感到我在这里错过了一些非常简单的东西。
答案 0 :(得分:3)
为MenuItems设置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来设置操作栏数据。