есть ли прослушиватель клавиши возврата по умолчанию (на устройстве) в Android?

У меня есть два действия A и B. Когда я нажимаю кнопку в A, которая показывает B. когда я нажимаю кнопку в B, она возвращается к A. Я установил метод overridePendingTransition после метода finish (). он работает правильно. но в случае, если текущая активность - B. в это время я нажимаю кнопку «Назад» по умолчанию на устройстве. он показывает переход справа налево, чтобы показать действие A.

Как я могу прослушать эту клавишу возврата по умолчанию на устройстве?

ИЗМЕНИТЬ:

Log.v(TAG, "back pressed");
finish();
overridePendingTransition(R.anim.slide_top_to_bottom, R.anim.hold);

person Praveen    schedule 07.04.2010    source источник


Ответы (4)


@Override
public boolean onKeyDown(int keyCode, KeyEvent event)  {
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
        // do something on back.
        return true;
    }

    return super.onKeyDown(keyCode, event);
}

Следующая ссылка представляет собой подробное объяснение того, как обрабатывать события клавиши возврата, написанное самими разработчиками Android:

Использование клавиши возврата

person Jamie Keeling    schedule 07.04.2010
comment
Не могли бы вы отредактировать свой вопрос, чтобы показать код, с которым у вас есть проблемы в данный момент? Кто-то из нас может помочь - person Jamie Keeling; 07.04.2010
comment
просто я скопирую и вставлю ваш фрагмент кода в свой класс активности. просто замените //сделать что-нибудь на мой фрагмент кода редактирования (см. вопрос). - person Praveen; 07.04.2010
comment
отлично. это работает. мы должны упомянуть, какую деятельность класс. активность.это.финиш(); . Это оно. Большое спасибо. - person Praveen; 07.04.2010
comment
Код для onBackPressed в ссылке у меня отлично работал. - person computercarguy; 05.04.2019
comment
А из фрагмента? - person JMB; 23.04.2020

Для Android 2.0 и более поздних версий в классе Activity есть специальный метод:

@Override  
public void onBackPressed() {
    super.onBackPressed();   
    // Do extra stuff here
}
person Nikolay Ivanov    schedule 07.04.2010
comment
Это предпочтительный подход для Android 2.x. Однако для более ранних версий Android вам все равно нужно использовать onKeyDown(). - person CommonsWare; 07.04.2010
comment
не работает .... я не могу напечатать заявление на самом logcat. я использовал оба метода. - person Praveen; 07.04.2010
comment
Я не знаю, когда это изменилось, но super.onBackPressed(); больше не нужно. - person computercarguy; 05.04.2019

Дополнительную информацию об обратном ключе можно найти здесь: http://android-developers.blogspot.com/2009/12/back-and-other-hard-keys-three-stories.html

person Moss    schedule 07.04.2010

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

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)  {
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
        // do something on back.
        try{
            mp.stop(); //this line stops the player
            return super.onKeyDown(keyCode, event);//this line does the rest 
        }
        catch(IllegalStateException e){
            e.printStackTrace();
        }
        return true;
    }

    return super.onKeyDown(keyCode, event); //handles other keys
}
person NickOpris    schedule 18.07.2010