Есть ли 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; 
Другие вопросы по тегам