Ich habe 2 Aktivitäten: Main und List.
Von Main aus können Sie List öffnen. In der Liste können Sie Main öffnen.
Ich mag es so , dass jede Öffnung der Liste nicht nicht in die ‚Geschichte‘ gerettet werden. Wenn Sie also von Main zurück drücken, können Sie nicht zur Liste zurückkehren.
Ist es möglich?
android
back-stack
Realtebo
quelle
quelle
finish()
sofort danach aufrufenstartActivity(...)
. Auf diese Weise gibt es nichts, zu dem Sie zurückkehren können, wenn der Benutzer von 'main' auf BACK drückt.Antworten:
Activity
Setzen Sie beim Starten Ihrer Liste dieIntent
Flags wie folgt:Das
FLAG_ACTIVITY_NO_HISTORY
Flag verhindert, dass das NeueActivity
zum Verlaufsstapel hinzugefügt wird.NB: Wie @Sam hervorhebt, können Sie
i.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
stattdessen verwenden. Es gibt keinen funktionalen Unterschied.quelle
Intent
Flag, das besagt, dass "nur dann zur Geschichte hinzugefügt wird, wenn nicht zumActivity
Ursprung zurückgekehrt wird".setFlags()
mit dem SiegetFlags()
statt verwendet habenIntent.addFlags()
?Fügen Sie in der Manifestdatei Folgendes hinzu:
zu der Aktivität, die Sie nicht auf dem Stapel behalten möchten.
quelle
Verwenden Sie die neue Aufgabe beim Löschen. Dies funktionierte in meinem Fall, als die anderen Optionen nicht funktionierten.
Löschen Sie den gesamten Verlaufsstapel und starten Sie eine neue Aktivität unter Android
quelle
Wenn Sie bei Ihrer Aktivität direkt nach dem Öffnen eine andere aufrufen (), wird die abgeschlossene Aktivität vom Stapel entfernt.
beispielsweise:
quelle
In meinem speziellen Fall
FLAG_ACTIVITY_NO_HISTORY
hat nicht funktioniert. Weder hatFLAG_ACTIVITY_NEW_TASK
nochFLAG_ACTIVITY_CLEAR_TASK
alleine gearbeitet.Allerdings
FLAG_ACTIVITY_NEW_TASK
undFLAG_ACTIVITY_CLEAR_TASK
zusammen hat funktioniert.quelle
Ich wollte nur einen Weg hinzufügen, dies in Kotlin zu tun:
quelle
Intent(this, MainActivity::class.java).apply { addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK) }.also { startActivity(it) }
Späte Antwort, fügt aber anderen Antworten etwas Tiefe hinzu. Es kommt darauf an, was mit anderen Aktivitäten geschehen soll, die von dieser Aktivität aus gestartet wurden
Option 1 - Nur diese eine Aktivität sollte keinen Verlauf der aufrufenden Aktivität haben
Dann machen Sie einfach:
Option 2 - Alle Aktivitäten, die mit dieser bestimmten Aktivität gestartet wurden, sollten keinen Verlauf haben
Fügen Sie dann im Manifest der aufrufenden Aktivität hinzu:
Wenn Sie jedoch einen Verlauf in einer neuen Aktivität haben möchten, müssen Sie das Flag manuell entfernen:
Hoffe das klärt andere Antworten auf :)
quelle
Versuchen Sie FLAG_ACTIVITY_CLEAR_TOP, wenn die Aktivität bereits ausgeführt wird:
quelle
füge die Flagge
FLAG_ACTIVITY_NEW_TASK
zu deinem hinzuIntent
http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_NEW_TASK
quelle
Können Sie die Zurück-Schaltfläche für die jeweilige Aktivität nicht überschreiben, um die Rückgabefunktion zu stoppen?
quelle
Activity
ist nicht empfehlenswert, die BACK-Presse nur still zu verbrauchen und das Beenden eines zu verhindern .OnBackPressed
es.