Как очистить текущий стек активности при запуске другого действия, принадлежащего другому стеку
Например: старт 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.