2010-07-08 3 views
6

Ich habe Probleme, alle Aktivitäten aus dem Stapel mit Intent.FLAG_ACTIVITY_CLEAR_TOP und Android: launchMode = "singleInstance".Wie lösche ich alle Aktivitäten vom Stapel?

In meiner Anwendungsaktivität A startet Aktivität B (über startActivity), die wiederum die Aktivität C startet (über startActivity). Bei Aktivität C drückt der Benutzer einen Menüeintrag, um zu Aktivität A zurückzukehren. Wenn sie bei Aktivität A ankommen, möchte ich nur A auf dem Stapel, so dass sie, wenn sie auf die Zurück-Schaltfläche klicken, zum Startbildschirm (Desktop) zurückkehren.

Dies ist der Code, den ich derzeit benutze, wenn der Benutzer eine Taste A zurückzukehren drückt:

Intent i = new Intent(this, A.class); 
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(i); 

Alle Aktivitäten werden als android definiert: launchMode = „SingleInstance“ im Projekt manifestieren.

Mein Code scheint nicht zu funktionieren. Wenn ich wieder auf Aktivität A stehe, wenn ich auf die Zurück-Schaltfläche klicke, gehe ich zurück zu Aktivität C. Missverstehe ich die Verwendung von Intent.FLAG_ACTIVITY_CLEAR_TOP?

+0

Auch ich bin mit einem ähnlichen Problem konfrontiert. Wurde es gelöst? Wenn ja, wie hast du es gemacht? – EnthuDeveloper

Antwort

2

Ich habe immer den besten Weg gefunden sicherzustellen, dass C aus dem Stapel entfernt werden würde, ist callende() nach StartActivity, um C vom Stapel zu entfernen.

Die Dokumentation liest sich, als würden sich die Dinge so verhalten, wie Sie es erwartet haben, aber es scheint, dass dies nicht geschieht, also wird finish() sicherstellen, dass C entfernt wird.

+0

Aufruf beenden() würde C entfernen, aber B wäre immer noch auf dem Stapel. Ich will A, B, C alle im Stapel, bis der Benutzer speziell fordert, von C gehen -> A. – Richard

+0

FLAG_ACTIVITY_CLEAR_TOP wird loswerden B, aber aus meiner Erfahrung (und es scheint ähnlich wie Ihre), wird es nicht bekommen los von C. Also, wenn Sie die Flagge und die Verwendung von finish() kombinieren, sollten Sie bekommen, was Sie wollen. –