Как завершить все действия в стеке, кроме первого в Android

Я портирую приложение для iPhone на Android и, похоже, не могу найти средства для добавления каждого действия в стек, кроме корневого.

В объективе-c я бы сделал что-то вроде ниже

[navController popToRootViewControllerAnimated:YES];

Кто-нибудь знает, могу ли я эффективно вызывать "finish()" для каждого действия после некоторого действия?

2 ответа

Решение

Если вы хотите запустить одно действие, скажем, домашний экран, и удалить все остальные действия из стека вашего приложения, вы можете использовать:

Intent intent = new Intent(this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); // Removes other Activities from stack
startActivity(intent);

Если вы также хотите предоставить это событие в MainActivity (например, щелчок логотипа в строке заголовка), вы можете добавить FLAG_ACTIVITY_SINGLE_TOP флаг, чтобы убедиться, что он не добавляет другой экземпляр себя в стек.

Посмотрите на http://developer.android.com/reference/android/content/Intent.html: вы можете запустить действие с активностью root с этим флагом, и он сместит все действия над ним. Вам следует внимательно прочитать документы о поведении при доставке.

Другие вопросы по тегам