Есть ли FLAG_ACTIVITY_****, чтобы перенести предыдущее действие на передний план и завершить все остальные между стеком?
У меня в данный момент есть некоторые Действия в моем стеке, давайте представим:
А, В, С,D, Е.
Я нахожусь в Занятии E, и моя "навигация вверх" должна вывести Занятие A на передний план и закончить (B,C,D).
В настоящее время я работаю с:
case android.R.id.home:
Intent intent = new Intent(this, ActivityA.class);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent);
finish();
return true;
Это хорошо, и Задание A возвращается в прежнее состояние, но (B, C, D) все еще существует.
Есть ли способ правильно закончить (B,C,D)?
Примечание: я ищу, чтобы избежать сложных вещей, таких как onActivityResult, с которыми было бы невозможно справиться в сложной структуре приложения
Благодарю.
2 ответа
Я думаю FLAG_ACTIVITY_CLEAR_TOP
это то, что вам нужно:
Если установлено, и запускаемое действие уже выполняется в текущей задаче, то вместо запуска нового экземпляра этого действия все остальные действия поверх него будут закрыты, и это намерение будет доставлено (теперь вверх) старая деятельность как новый Намерение.
Хотя, если вы хотите повторно использовать существующий экземпляр Activity A (через onNewIntent()
) тогда вам также может понадобиться установить FLAG_ACTIVITY_SINGLE_TOP
в намерении.
Попробуйте с этим:
case android.R.id.home:
Intent intent = new Intent(this, ActivityA.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
finish();
return true;