Запустить новое действие и очистить предыдущие действия, кроме домашнего действия

У меня есть последовательность действий запускает ниже:

Домашнее задание -> Второе задание -> Третье задание -> Четвертое занятие

Чего я хочу достичь, так это того, что когда третье действие запускает четвертое, оно очищает действия 2 и 3 от backstack. Таким образом, нажатие на 4-е действие возвращает к домашнему действию

т. е. пользователь все еще должен иметь возможность вернуться с 3-го действия ко 2-му, но после запуска 4-го действия действия 2 и 3 удалены.

Какая конфигурация для этого?

4 ответа

Решение

Хотя все ответы были полезны, и так как у меня было только 2 действия, которые я хотел закрыть, это то, что я сделал:

  1. startActivityForResult() на занятии 2
  2. После успешного запуска Деятельности 4 на Мероприятии 3 я RESULT_OK прежде чем я позвоню finish() на мероприятии 3.
  3. На занятии 2 я обрабатываю успешный результат на onActivityResult()Таким образом, я знаю, что задание 4 было запущено, поэтому я могу завершить задание 2.

Поэтому оба мероприятия 2 и 3 закрываются при запуске действия 4.

Похоже, вы хотите CLEAR_TOP.

Попробуй это:

Intent i = new Intent(this, HomeActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);

Вы можете зарегистрироваться BroadCastReceiver во 2-й и 3-й деятельности, которая имеет finish() в его onReceive() реализация.

Запустите трансляцию, начиная 4-е задание.

Если это работает, переместите ту же реализацию Broadcast в BaseClass и добавьте логическую проверку для регистрации трансляции или нет.

Если вы используете фрагменты, вы можете попробовать

getFragmentManager().popBackStack("tag_of_fragment_to_pop", 0);

Я думаю, что самый простой способ будет использовать что-то как таковое:

Intent homeActivityIntent = new Intent(fourth.this,
                        home.class);
homeActivityIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
homeActivityIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(homeActivityIntent);
Другие вопросы по тегам