Как работать с нажатыми (keyDown - в предыдущей версии), чтобы показать диалог подтверждения для выхода из приложения? - PullRequest
0 голосов
/ 26 октября 2011

Я сделал логику для отображения диалогового окна подтверждения, когда пользователь нажимает кнопку «Назад», переопределяя метод backPressed, но это подразумевает необычное поведение.Если отображается клавиатура с программным вводом, при событии нажатия клавиши она должна быть скрыта, а другое событие нажатия клавиши должно запускать диалоговое окно подтверждения.Есть способ добиться этого?Может быть, путем обнаружения, если мягкая клавиатура ввода включена и пропустить диалог подтверждения?

Вот пример кода, чтобы прояснить это:

public boolean onKeyUp(int keyCode, KeyEvent event) 
{
    if (keyCode == KeyEvent.KEYCODE_BACK) 
    {
              //here is the mystery 
              if (soft keyboard is visible)
              {
                    return super.onKeyUp(keyCode, event);
              } else
              {
                                //method which shows the close dialog and close the application
                    onBackPressed();
                    return true;
              }
    }
              return super.onKeyUp(keyCode, event);
 }

Ответы [ 2 ]

2 голосов
/ 26 октября 2011

если отображается программная клавиатура, я не думаю, что Activity может получить событие возврата клавиши. поведение по умолчанию - клавиша «назад», чтобы программная клавиатура исчезла.

View также может блокировать ключевые события, простой способ - setOnKeyListener. убедитесь, что ваш View является фокусируемым, и когда он получит событие back key, просто верните true.

1 голос
/ 26 октября 2011

Код, чтобы скрыть панель функциональных клавиш:

 InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);

Вы можете поместить этот код на BackKeyPressed независимо от того, показывает клавиатура или нет

...