2014-11-09 2 views
0

Я пытаюсь создать меню Android, которое должно динамически создаваться внутри приложения Google Glass. Поэтому у меня есть массивы, которые содержат различные объекты, которые должны отображаться в меню. Меню должно выглядеть следующим образом:Меню динамических опций -> как получить выбранный элемент?

  • Menu1
    • Option1
    • option2
    • OPTION3
  • menu2
    • ОПЦИЯ1
    • option2
  • menu3
  • 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) { 
} 

является вызывается, когда выбран элемент меню, но вопрос прямо сейчас i Как получить выбранный элемент?

ответ

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 
    } 
} 

Надеется, что это помогает

+0

эй, выглядит просто, но actuall не работает :) из-за того, что я не знаю, какие ценности могут быть в моем массиве я не могу задать с помощью простого переключения сазе. Я нашел решение, которое вы можете найти в качестве нового ответа! Но в любом случае, много для вашего ответа :) – user2858559

0

Я нашел решение. Из-за того, что я не знаю, какие элементы/значения могут быть в моем массиве, я создал простой флаг. Это значит ... Я создаю главное меню, где каждый элемент имеет фиксированный уникальный идентификатор. Элементы подменю не имеют уникального идентификатора, у них есть только заголовок. Итак, теперь я должен сначала проверить, было ли нажато одно из пунктов главного меню (уникальный идентификатор), или заголовок элемента щелчка находится либо в одном из массивов, либо нет. Работает довольно хорошо :) Надеюсь, это тоже поможет!

Привет

Смежные вопросы