Entfernen einer Aktivität aus stack in android
Ich soll zum entfernen einer Aktivität aus Stapel mithilfe von code.Heres mein Fall
- Von Seite werde ich die Seite B.
- Von Seite B ich müssen zurück zur Seite mit return-Taste.
- In Seite B habe ich eine Schaltfläche, die nimmt zu Seite C.
- Wenn ich auf die Schaltfläche in der Seite B , ich rufe
finish(); //to remove PageB from stack
Ok, Hier ist das Problem, Von der Seite C, wenn ich auf die return-Taste bin ich auf Seite A. weil es im stack.
Möchte ich entfernen Sie Eine Seite aus dem Stapel, wenn ich auf die Schaltfläche klicke in Seite B.
Bitte beachten Sie, dass ich kann nicht rufen Sie ein finish() in Eine Seite beim aufrufen von Seite B, weil ich will, um zurück zur Seite A. Nur den Fall, ich möchte nicht zurückkehren wird, wenn der button in Seite B geklickt wird.
Wie kann ich das in android?
Dank
- also wenn du in C auf die Aktivität, die Sie wollen, zu gehen, wenn wieder gedrückt wird?
- Tatsächlich-Prozess gestartet, die aus C,Dann A, dann B ,In B ich Klick auf Abmelden-So kommt es wieder zu C, die login-Bildschirm. Also von daher möchte ich nicht zu gehen Sie zurück zu einem Bildschirm.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fordern, anstatt
startActivity
in Einem wenn Sie beginnen, B, nennenstartActivityForResult
. Dann in Ihre Aktivität für Ein, GriffonActivityResult
.Nun in B, wenn Sie open C, call
setResult
vor dem Aufruf beenden. Dies ermöglicht es Ihnen, um einige Daten zu bekommen, ging zurück zu Einer deronActivityResult
Methode. Pass ein flag, um anzuzeigen, dass Ein sollte sich zu schließen, und rufen Sie dannfinish
. Griff, die fahne in Einem deronActivityResult
.Diese Weise, jede Aktivität ist verantwortlich für das schließen selbst, und Sie sind nicht künstlich messing mit der back-stack. Mit Absicht flags funktionieren in einem einfachen A -, B -, C-Fall, wohl aber auseinander fallen, wenn diese 3 Bildschirme sind Teil einer größeren Lösung (d.h. A,B und C sind tief unter einem Stapel von Aktivitäten, die Sie don ' T wollen, um Durcheinander mit).
Statt der Beendigung der aktuellen Aktivität können Sie direkt zu einer anderen Aktivität, indem Sie eine Absicht.
Können Sie startActivity() aufrufen, um wieder A aus B.
Sicherlich gibt es eine bessere Antwort auf dieser Seite aber, als eine Problemumgehung, die Sie verwenden konnten SharedPreferences um eine Nachricht an Aktivität Ein, fordern, dass es auch beendet ist.
Aktivität Ein:
Aktivität C:
Beachten Sie, dass dies ist ein wenig riskant, da die Einstellungen überleben den Neustart und kann es verhindern, dass Eine zu starten, wenn, zum Beispiel, Ihre Anwendung, die getötet wird, bevor Ein wird fortgesetzt.
Um dies zu umgehen, sollten Sie auch entfernen, die Nachricht in A. onCreate()