Android - проверяемые кнопки в меню настроек

1

Может ли кто-нибудь указать направление любых учебных пособий, которые показывают, как создать меню опций с проверками clicakble, как на рисунке ниже:


alt text http://img291.imageshack.us/img291/1221/deviceit.png


Я пробовал следующее:

/** Menu creation and setup **/

/* Creates the menu items */
public boolean onCreateOptionsMenu(Menu menu) {
 boolean result = super.onCreateOptionsMenu(menu);

    menu.add(0, 1, 0, "Speaker").setCheckable(true);
    menu.add(0, 2, 0, "Mute").setCheckable(true);
    return result;
}

/* Handles item selections */
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case 1:
  if(audioManager.isSpeakerphoneOn()==false){
   audioManager.setSpeakerphoneOn(true);
   audioManager.setRouting(AudioManager.MODE_IN_CALL,
      AudioManager.ROUTE_SPEAKER, AudioManager.ROUTE_ALL);
  }else{
   audioManager.setSpeakerphoneOn(false);
   audioManager.setRouting(AudioManager.MODE_IN_CALL,
      AudioManager.ROUTE_EARPIECE, AudioManager.ROUTE_ALL);
  }
        return true;
    case 2:
     if(audioManager.isMicrophoneMute())
   audioManager.setMicrophoneMute(false);
   else
   audioManager.setMicrophoneMute(true);
        return true;
    }
    return false;
}  

Но это не работает, он дает мне текст только на кнопках в меню параметров

EDIT: я добавил следующий метод onPrepareOptionsMenu:

public boolean onPrepareOptionsMenu(Menu menu){
    boolean result = super.onPrepareOptionsMenu(menu);

    if(audioManager.isSpeakerphoneOn())
     menu.findItem(1).setChecked(true);
    else
     menu.findItem(1).setChecked(false);

    if(audioManager.isMicrophoneMute())
     menu.findItem(2).setChecked(true);
    else
     menu.findItem(2).setChecked(false);


    return result;
}

Однако я получаю тот же результат только текст и контрольный свет, как на картинке выше

  • 0
    Старый вопрос, но просто примечание для всех, кто ищет - при использовании menu.findItem () используйте идентификатор элемента, а не номер индекса. то есть menu.findItem (R.id.menu_item)
Теги:
button

2 ответа

4
Лучший ответ

Если вы хотите динамически изменять состояние своего опционного меню, вам нужно использовать onPrepareMenu(). В этом методе вы можете выполнять динамические проверки и обновлять все, что захотите. Удачи!
документация

После некоторого копания это выглядит как пользовательское представление. Я думаю, что ваша фотография приходит из этого кода.

  • 0
    Я добавил этот метод, я отредактировал свой вопрос, чтобы показать вам мой код, но результат тот же, я не могу заставить его производить контрольный свет, который включается и выключается (зеленый)
  • 0
    На самом деле изображение, которое вы отображаете, выглядит как пользовательский вид ... Это то, что вы нашли в Интернете? Потому что, может быть, это невозможно из основного API, и вам придется создать собственное меню. Я не помню, чтобы когда-либо видел меню в Android с иконкой под текстом.
Показать ещё 3 комментария
1

Это старый вопрос, но у меня была такая же проблема, и я много искал, чтобы найти такие опции, как показано выше. Я нашел учебник по http://www.codeproject.com и немного изменил его. Может быть, это не профикс-код, но он работает для меня. Ознакомьтесь с моими изменениями на моей (плохой) веб-странице на сайтах Google (я также получил небольшое учебное пособие на этом сайте):

https://sites.google.com/site/opiatefuchs/android-code-examples

Этот код является оригинальным от wjfrancis на веб-странице Project Code (много реквизитов):

http://www.codeproject.com/Articles/173121/Android-Menus-My-Way

Я только что изменил его и буду рад, если кто-нибудь получит какие-либо идеи по улучшению этого кода. Но пока это работает.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню