Ich habe einige Aktivitäten, zum Beispiel A, B, C, D Wie kann ich Aktivität D beenden, Rückstapel rückgängig machen, um die Rückkehr zu Aktivität C zu vermeiden, und zurück zu Aktivität B. Bitte, nicht Zweck Start D von C für Ergebnis und in OnActivityResult in C, Ende erneut aufrufen =), weil Ende() bereits verwendet wird))Android löschen Aktivität Backstack
Antwort
Sie können das FLAG_ACTIVITY_CLEAR_TOP
Flag verwenden.
Siehe die Android documentation hier. Es verwendet tatsächlich das genaue Beispiel, das Sie gaben:
Wenn festgelegt, und die Aktivität, die gestartet wird, wird bereits in der aktuellen Aufgabe ausgeführt, dann eine neue Instanz dieser Aktivität starten, alle anderen Aktivitäten darüber Es wird geschlossen und diese Absicht wird als neue Absicht an die (jetzt oben) alte Aktivität geliefert.
Betrachten wir zum Beispiel eine Aufgabe der Aktivitäten aus: A, B, C, D. Wenn D ruft startActivity() mit der Absicht, die dem Komponente B Aktivität aufgelöst wird, dann C und D wird fertig gestellt werden und B erhält die gegebene Absicht, was in dem Stapel jetzt sein: A, B.
Ich bin nicht sicher, ob das Verhalten auf permanente Basen benötigt oder es ist an Bedingungen geknüpft. Im ersten Fall, dass Sie in Ihren D
manifestieren Aktivität Erklärung folgender Zeilen hinzufügen:
android:parentActivityName="com.example.B"
Im zweiten Fall, dass Sie in der Aktivität D
außer Kraft setzen können - onBackPressed()
Methode und Activity B
starten von hier hängt von aktueller Situation.