Не отменяемое диалоговое окно закрывается при нажатии кнопки поиска - PullRequest
2 голосов
/ 05 марта 2011

Я показываю неотменяемое диалоговое окно в моем приложении, но оно отменяется, если пользователь нажимает кнопку ПОИСК. Я пытался переопределить onSearchRequested и onKeyDown, но это не помогает. Любое предложение?

Ответы [ 2 ]

3 голосов
/ 28 марта 2011

Я тоже сталкивался с этой проблемой, и решение Jamasan не сработало для меня.Вместо этого я добавил следующий код в свой пользовательский класс диалога (расширяющий диалог):

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_SEARCH) {
        return true;
    } else {
        return false;
    }
}

keyCode и KeyEvent.KEYCODE_SEARCH оба являются int.Документы для onKeyDown говорят:

Если вы обработали событие, верните true.Если вы хотите разрешить обработку события следующим получателем, верните false.

Работает для меня.

0 голосов
/ 05 марта 2011

Переопределите событие onKeyDown в Activity и проверьте, чтобы KEYCODE_SEARCH возвращал false

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {

    char c = (char) event.getUnicodeChar();

    if (c == KeyEvent.KEYCODE_SEARCH) {
        return false;
    } else {
        return super.onKeyDown(keyCode, event);
    }
}

Возвращение false просто блокирует нажатие клавиши (как будто этого не произошло). В противном случае запуск super.onKeyDown (..) просто обрабатывает его регулярно.

Удачи.

...