Как очистить текущий стек активности при запуске другого действия, принадлежащего другому стеку

Например: старт B, старт B, C, A и C принадлежат стеку Hello, а B принадлежит стеку World. Когда пользователь нажимает кнопку "Назад" в Деятельности C, он возвращается к A. Примечание1:B означает множество действий, а не только одно, например, начало А1, В1, начало В2, В2, начало В3....,Bn, начало С. Примечание 2. Мне нужно, чтобы B оставались в стеке до тех пор, пока C не будет запущен, когда пользователь нажмет назад в B3 он должен вернуться к b2.

Я на самом деле реализовал эту необходимость с помощью startActivityForResult, и я просто хочу знать, есть ли способ использовать стек для реализации этого.

3 ответа

Решение

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); или intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); работает для меня.

Переходя от действия A к действию B, действуйте, как показано ниже:

 Intent i=new Intent(ActivityA.this,ActivityB.class);
 startActivity(i);

И так как вы хотите открыть C из B, но не хотите, чтобы B был в стеке, сделайте так, как показано ниже:

 Intent i=new Intent(ActivityB.this,ActivityC.class);
 startActivity(i);
 ActivityB.this.finish();

Таким образом, автоматически при нажатии на C вы получите A, а не B.

Просто вызовите finish(), когда вы запускаете Activity C из B. Затем переопределите onBackPressed() в Activity C. И добавьте код для запуска Activity A.

Другие вопросы по тегам