Запустить новое действие и очистить предыдущие действия, кроме домашнего действия
У меня есть последовательность действий запускает ниже:
Домашнее задание -> Второе задание -> Третье задание -> Четвертое занятие
Чего я хочу достичь, так это того, что когда третье действие запускает четвертое, оно очищает действия 2 и 3 от backstack. Таким образом, нажатие на 4-е действие возвращает к домашнему действию
т. е. пользователь все еще должен иметь возможность вернуться с 3-го действия ко 2-му, но после запуска 4-го действия действия 2 и 3 удалены.
Какая конфигурация для этого?
4 ответа
Хотя все ответы были полезны, и так как у меня было только 2 действия, которые я хотел закрыть, это то, что я сделал:
startActivityForResult()
на занятии 2- После успешного запуска Деятельности 4 на Мероприятии 3 я
RESULT_OK
прежде чем я позвонюfinish()
на мероприятии 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);