Как завершить деятельность до одной конкретной деятельности?

Например, я открыл действия A, B, C, D.

Я хочу закончить D и C и вернуться обратно в B.

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

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


person Figen Güngör    schedule 12.11.2015    source источник


Ответы (3)


Intent intent = new Intent(getApplicationContext(), B.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

И в деятельности B:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
    if ((keyCode == KeyEvent.KEYCODE_BACK))
    {
        finish();
    }
    return super.onKeyDown(keyCode, event);
}
person Kamajabu    schedule 12.11.2015
comment
Спасибо, @Reiz3N. Intent.FLAG_ACTIVITY_CLEAR_TOP работал как по маслу. - person Figen Güngör; 12.11.2015

Я думаю, вы можете добавить this.finish() в свой метод активности onDestroy() в классах C и D, тогда, если вы перейдете от C к D, Android завершит это действие, и вы перейдете непосредственно от D к B, а не от D к C.

Я надеюсь, что это поможет вам.

person Samuel    schedule 12.11.2015

Сделайте глобальную статическую boolean скажем closeActivity. Установите его на false по умолчанию. Когда D заканчивается, установите переменную в true. В onResume действия C проверьте, установлена ​​ли переменная в true, и если true, вызовите finish(). Делайте это до тех пор, пока не будет достигнуто действие B, и в onResume из B установите boolean на false

person SKT    schedule 12.11.2015