Я хочу, чтобы действие завершилось, если я нажму кнопку ESCAPE на AlertDialog в действии - PullRequest
0 голосов
/ 11 февраля 2012

У меня есть 3 действия A, B & C .

Я представляю некоторые видеосвязи в разделе Деятельность A в списке.Если пользователь нажимает на элемент, я загружаю Activity B , в которой я делаю некоторую проверку данных пользователя, например, запрашиваю его предоставить свои данные для входа в AlertDialog .В этом диалоговом окне я представляю две кнопки для Вход в систему & Отмена .Если пользователь нажимает Login , я проверяю его информацию и открываю Activity C , где я проигрываю его выбранное видео.Но если пользователь нажимает Отмена , i finish () Активность B для загрузки Активности A .

Это отлично работаетесли пользователь взаимодействует только через бурроны.

Но возникает проблема, когда я нажимаю кнопку ESCAPE на моей клавиатуре / D-Pad, когда открыт AlertDialog .Диалог исчезает, но действие B не finish () .Я переопределил onKeyDown Активности B , где я делаю следующее.

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK
            || keyCode == KeyEvent.KEYCODE_ESCAPE) {
        Log.d(TAG, "onKeyDown : calling finish() manually");
        finish();
        return true;
    } else
        return false;
}

Но это не работает, КОГДА я нажимаю ESCAPE наоткрытый AlertDialog .

Как мне этого добиться?

1 Ответ

1 голос
/ 11 февраля 2012

Захватите событие setOnKeyListener AlertDialog и вставьте в него следующий код.Также закроется действие на кнопке НАЗАД:

 @Override

    public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) 
    {
        if (keyCode == KeyEvent.KEYCODE_BACK || keyCode == KeyEvent.KEYCODE_ESCAPE)                                 
        {           
            yourActivity.finish();
            return true;
        } 
        return false;
    }
...