Кнопка возврата Android

#android

#Android

Вопрос:

В моем приложении у меня есть кнопка, по которой, если пользователь нажимает, на экране появляется текстовое поле (я использую setVisibility от GONE до VISIBILE). проблема, с которой я сталкиваюсь, заключается в том, что когда пользователь нажимает кнопку «НАЗАД» на устройстве: оно закрывает мое приложение.

Есть ли какой-либо способ, чтобы, когда пользователь нажимает кнопку «НАЗАД», вызывался мой код (чтобы я мог установить видимость ПРОПАВШЕЙ)?

Ответ №1:

Начиная с уровня API 1, работает следующее:

 @Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        //Do whatever you want 
        //AND 
        //return true to tell the framework you did handle the back key
        return true;
    }
    //This is not the back key, just ask the framework to behave as usual.
    return super.onKeyDown(keyCode, event);
}
  

Начиная с уровня API 5 (Android 2.0), вы также можете использовать:

 @Override
public void onBackPressed() {
    // Do something (or nothing) here
    return;
}
  

Смотрите Это сообщение в блоге разработчика Android для получения полного обзора.

Комментарии:

1. завершение по умолчанию не будет работать, если мы не вызовем метод суперкласса super.onKeyDown (код ключа, событие), просматривая мой код;

2. @ArpitGarg, вы имеете в виду, что возврат false к onKeyDown приведенному выше не finish() приведет к активности?

3. да, возврат false в onKeyDown выше не завершит () действие … вот почему я предположил, что

Ответ №2:

Переопределите onBackPressed() желаемую функциональность.

Реализация по умолчанию просто вызывает finish() закрытие текущего действия.

Комментарии:

1. Примечание: Это доступно только с Android 2.0 и выше. (Уровень API 5)

Ответ №3:

 public boolean onKeyDown(int keyCode, KeyEvent keyEvent) {

        if (keyCode == KeyEvent.KEYCODE_BACK) {
            // Put your code here
        }

        return true;

    }
  

Комментарии:

1. Внимание! случается, что вы отменяете все нажатия клавиш, безоговорочно возвращая true здесь. Это плохо, если вы пытаетесь использовать EditText 🙂

2. спасибо,,, вы правы, возврат true отменит каждое нажатие клавиши