Android - Меню настроек не работает - PullRequest
3 голосов
/ 05 августа 2010

Я пытаюсь создать меню «Параметры» в «Деятельности», которое запускается из Службы, а затем изменяет его пользовательский интерфейс на основе сообщений от Службы, передаваемых через Обработчик.:


     /** Menu creation and setup **/

        /* Creates the menu items */
        public boolean onCreateOptionsMenu(Menu menu) {
            menu.add(0, 1, 0, "Speaker");
            menu.add(0, 2, 0, "Mute");
            return true;
        }

        /* Handles item selections */
        public boolean onOptionsItemSelected(MenuItem item) {
            switch (item.getItemId()) {
            case 1:
                //Do something here
                return true;
            case 2:
               //Do something here
                return true;
            }
            return false;
        }  

Но он никогда не вызывается, когда мое приложение вообще запускается.

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

Так как я могу это исправить, поскольку не могу переопределить метод в обработчике

Ответы [ 2 ]

5 голосов
/ 05 августа 2010

Убедитесь, что вы не используете ключевое событие для меню в обработчике ключей.Событие кнопки меню отправляется через ключевые обработчики перед обработкой функцией onCreateOptionsMenu.Это может происходить в любом представлении с фокусом или самой деятельностью.Быстрый способ исправить это будет следующим:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if(keyCode == KeyEvent.KEYCODE_MENU)
        return super.onKeyDown(keyCode, event);
    -- insert all other key handling code here --
    return false;
}
2 голосов
/ 05 августа 2010

Попробуйте вызвать метод super в переопределенном методе onCreateOptionsMenu следующим образом:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    boolean result = super.onCreateOptionsMenu(menu);
    menu.add(0, 1, 0, "Speaker");
    menu.add(0, 2, 0, "Mute");

    return result;
}
...