我正在尝试创建一个应该在Google Glass应用内动态构建的Android菜单。因此,我必须使用包含应在菜单中显示的不同种类对象的数组。 菜单应如下所示:
我已经用这段代码建立了菜单结构:
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) {
}
选择菜单项时会调用但现在的问题是如何获取所选项目?
答案 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),或者单击的元素的标题是否在其中一个数组中。 工作得很好:) 希望这对其他人也有帮助!
问候