402 Stimmen

Entfernen einer Aktivität aus dem Verlaufsstapel

Meine App zeigt eine Anmeldeaktivität an, wenn der Benutzer die App zum ersten Mal aufruft; das sieht so aus:

  1. ActivitySplashScreen (Willkommen im Spiel, Anmeldung für ein Konto?)
  2. ActivitySplashScreenSignUp (großartig, geben Sie diese Informationen ein)
  3. ActivityGameMain (Hauptbildschirm des Spiels)

so dass die Aktivitäten in genau dieser Reihenfolge gestartet werden, wenn der Benutzer eine Schaltfläche auf jedem Bildschirm anklickt.

Wenn der Benutzer von Aktivität Nr. 2 zu Aktivität Nr. 3 übergeht, ist es dann möglich, Nr. 1 und Nr. 2 vollständig aus dem Verlaufsstapel zu löschen? Ich möchte, dass der Benutzer, wenn er bei Aktivität Nr. 3 ist und auf die Schaltfläche "Zurück" drückt, zum Startbildschirm und nicht zum Startbildschirm zurückkehrt.

Ich denke, ich kann dies mit Aufgaben erreichen (z. B. eine neue Aufgabe auf # 3 starten), wollte aber sehen, ob es eine einfachere Methode gibt,

Danke

4voto

Nouman Ghaffar Punkte 3720

Es ist zu spät, aber ich hoffe, es hilft. Die meisten der Antworten weisen nicht in die richtige Richtung. Es gibt zwei einfache Indikatoren für solche Dinge.

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);

Aus den Android-Dokumenten:

public static final int FLAG_ACTIVITY_CLEAR_TASK Hinzugefügt in API-Stufe 11

If set in an Intent passed to Context.startActivity(), this flag will cause any existing task that would be associated with the

Aktivität, die vor dem Start der Aktivität gelöscht werden muss. Das heißt, die Aktivität wird die neue Wurzel einer ansonsten leeren Aufgabe, und alle alten Aktivitäten werden beendet. Dies kann nur in Verbindung mit FLAG_ACTIVITY_NEW_TASK VERWENDET WERDEN.

2voto

Rufen Sie einfach this.finish() vor startActivity(intent) wie folgt auf

       Intent intent = new Intent(ActivityOne.this, ActivityTwo.class);
        this.finish();
        startActivity(intent);

1voto

ricky Punkte 11

Das Entfernen einer Aktivität aus dem Verlauf erfolgt durch Setzen der Flagge vor der Aktivität, die Sie nicht wünschen.

A->B->C->D

Angenommen, A, B, C und D sind 4 Aktivitäten, und Sie wollen B und C löschen, dann Flagge setzen

intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);

In der Aktivität A und B

Hier ist das Code-Bit

Intent intent = new Intent(this,Activity_B.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(intent);

1voto

eagerprince Punkte 357
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            super.finishAndRemoveTask();
        }
        else {
            super.finish();
        }

-7voto

Alécio Carvalho Punkte 13103

Versuchen Sie dies:

intent.addFlags(Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY)

es sich um die API-Stufe 1 handelt, prüfen Sie die Link .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X