Как предотвратить возвращение к предыдущей активности? - PullRequest
190 голосов
/ 25 декабря 2011

Когда на телефоне нажата кнопка НАЗАД, я хочу, чтобы определенный вид деятельности не возвращался к предыдущему.

В частности, у меня есть экраны входа и регистрации, и оба запускают новое действие под названием HomeScreen, когда происходит успешный вход в систему / регистрация. После запуска HomeScreen я хочу запретить пользователям возвращаться к экранам входа или регистрации, нажав клавишу BACK.

Я пытался использовать Intent.FLAG_ACTIVITY_NO_HISTORY, но поскольку приложение имеет интеграцию с Facebook, при использовании «Войти через Facebook» Facebook должен вернуться к начальному экрану входа в систему, поэтому я должен сохранить историю этих действий.

Я думал о переопределении поведения кнопки НАЗАД на HomeScreen для непосредственного завершения приложения, когда кнопка нажата, и я использовал

@Override
public void onBackPressed() {
    finish();
}

но это тоже не работает.

Ответы [ 13 ]

1 голос
/ 30 марта 2015

Просто переопределите метод onKeyDown и проверьте, была ли нажата кнопка возврата.

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) 
{
    if (keyCode == KeyEvent.KEYCODE_BACK) 
    {
        //Back buttons was pressed, do whatever logic you want
    }

    return false;
}
0 голосов
/ 07 декабря 2018
@Override
public void onBackPressed() {
}

Когда вы создаете onBackPressed(), просто удалите super.onBackPressed();, и это должно работать

0 голосов
/ 02 ноября 2014

Помещенный

finish();

Сразу после ActivityStart остановить деятельность, не позволяющую вернуться к ней. Затем добавьте

onCreate(){
    getActionBar().setDisplayHomeAsUpEnabled(false);
    ...
}

На занятие, которое вы начинаете.

...