2012-03-30 8 views
0

Ich habe folgendes Setup für meine Aktivitäten:Clearing Aktivität Stapel funktioniert nicht

A (Nohistory) -> B -> C -> D -> E

Also, wenn ich starten activity E aus activity D Ich möchte E, um die Root-Aktivität zu werden und den Rest des Backstacks zu löschen.

Ich folgte die Lösung in vielen Beiträgen hier erwähnt, den folgenden Flags meine Absicht hinzuzufügen ist:

final Intent explicitIntent = new Intent(this, 
       E.class); 
     explicitIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     explicitIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     this.startActivity(explicitIntent); 

jedoch Activity E (die vorher nicht ausgeführt wurden) wird nicht die Wurzel des hinteren Stapels . Stattdessen wird nur Activity D aus dem Backstack gelöscht, C und B sind immer noch da, wenn ich die Zurück-Taste drücke.

Also ist das, was ich wirklich erreichen möchte in SDK < 11 wie hier beschrieben: Clear the entire history stack and start a new activity on Android?

+0

Sie möchten zu A von E auf Zurück drücken? – Rasel

+0

Überprüfen Sie den folgenden Link, eine ähnliche Frage. Es kann dir helfen. [Wie der Android-Stapel von Aktivitäten zu löschen?] (Http://stackoverflow.com/questions/4190429/how-to-clear-the-android-stack-of-activities) –

+0

@Rasel Nein, ich möchte verlassen Sie die Anwendung, wenn ich von E –

Antwort

0

Am Ende habe ich nur als Rasel empfohlen (in den Kommentaren zu meiner Frage) Bei der Eingabe der Aktivität E habe ich die Aktivitäten B, C, D beendet, um sie vom Stapel zu holen.

0

In Ihrem Code ersetzen Sie einfach die unten Linie:

explicitIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
explicitIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

mit dieser Linie:

explicitIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

diesen Code Versuchen.

+0

Hat auch nicht funktioniert (ich vermute, weil die Aktivität E noch nicht läuft) –

1

Ihre Aktivitäten wie diese starten ..

diese in Aktivität B

int k=1; 
     Intent i=new Intent(B.this,C.class); 
     startActivityForResult(i,k); 

diese in Tätigkeit C

int j=1; 
     Intent i=new Intent(C.this,D.class); 
     startActivity(i,j); 

dies in Aktivität D

int j=1; 
     Intent i=new Intent(D.this,E.class); 
     startActivityForResult(i,j); 
     setResult(RESULT_OK, null); 
     finish(); 

und das C in Tätigkeit setzen

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode ==1) { 
     if (resultCode == RESULT_OK) { 

     setResult(RESULT_OK, null); 
    finish(); 

     } 
    } 

dies in Aktivität B

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode ==1) { 
     if (resultCode == RESULT_OK) { 

     setResult(RESULT_OK, null); 
    finish(); 

     } 
    } 
+0

Hast du das versucht ...dieser funktioniert .. – 5hssba

Verwandte Themen