动态选项菜单 - >如何获得所选项目?

时间:2014-11-09 20:16:27

标签: android google-glass google-gdk android-menu

我正在尝试创建一个应该在Google Glass应用内动态构建的Android菜单。因此,我必须使用包含应在菜单中显示的不同种类对象的数组。 菜单应如下所示:

  • 菜单1
    • 选项1
    • 选项2
    • 选项3
  • 菜单2
    • 选项1
    • 选项2
  • 菜单3
  • Menu4

我已经用这段代码建立了菜单结构:

public boolean onCreateOptionsMenu(Menu menu) {
    menu.clear();
    SubMenu damageCodes = menu.addSubMenu(R.string.chooseDamageCode).setIcon(R.drawable.ic_document_50);
    int i = 0;
    for(Damagecode d : this.mDamagecodes){
        damageCodes.add(0, Menu.NONE, i, d.getCotext());
        i++;
    }
    SubMenu priorities = menu.addSubMenu(R.string.choosePriority).setIcon(R.drawable.ic_document_50);
    i = 0;
    for(Priority p : this.mPriorities){
        priorities.add(1, Menu.NONE, i, p.getPriokx());
        i++;
    }
    menu.add(3, Menu.NONE, Menu.NONE, R.string.setConfirmationText).setIcon(R.drawable.ic_pen_50);
    menu.add(4, Menu.NONE, Menu.NONE, R.string.backToTplnr_equipment).setIcon(R.drawable.ic_reply_50);
    getMenuInflater().inflate(R.menu.create_notification, menu);
    return true;
}

我知道方法

@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
}
选择菜单项时会调用

但现在的问题是如何获取所选项目?

2 个答案:

答案 0 :(得分:0)

只需在onMenuItemSelected中添加一个开关:

@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
    switch(item.getTitle()) {
    case R.string.chooseDamageCode:
        // do stuff here for damagecode item
    break;
    case R.string.choosePriority:
        // do stuff here for choosepriority item
    break;

    ...same for other items
    }
}

希望这有帮助

答案 1 :(得分:0)

我找到了解决方案。 由于我不知道我的数组中可以包含哪些元素/值,因此我创建了一个简单的标志。这意味着......我正在创建主菜单,其中每个项目都有固定的唯一ID。子菜单元素没有唯一的ID,它们只有标题。所以我现在正在做的是首先检查是否按下了一个主菜单项(唯一ID),或者单击的元素的标题是否在其中一个数组中。 工作得很好:) 希望这对其他人也有帮助!

问候