Как завершить все действия в стеке, кроме первого в Android - PullRequest
15 голосов
/ 09 июня 2011

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

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

[navController popToRootViewControllerAnimated:YES];

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

Ответы [ 2 ]

30 голосов
/ 09 июня 2011

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

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, чтобы убедиться, что он не добавляет другой экземпляр самого себя в стек.

2 голосов
/ 09 июня 2011

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

...