364 Stimmen

Android: Den hinteren Stapel löschen

In Android habe ich einige Aktivitäten, sagen wir A, B, C.

In A verwende ich diesen Code, um B zu öffnen:

Intent intent = new Intent(this, B.class);
startActivity(intent);

In B verwende ich diesen Code, um C zu öffnen:

Intent intent = new Intent(this, C.class);
startActivity(intent);

Wenn der Benutzer auf eine Schaltfläche in C tippt, möchte ich zu A zurückkehren und den hinteren Stapel löschen (sowohl B als auch C schließen). Also, wenn der Benutzer die Zurück-Taste B und C wird nicht angezeigt, ich habe versucht, die folgenden:

Intent intent = new Intent(this, A.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(intent);

Aber B und C werden immer noch angezeigt, wenn ich die Zurück-Taste benutze, wenn ich wieder in Aktivität A bin.

9voto

Richard Le Mesurier Punkte 28822

Gemäß Wakka en Entfernen einer Aktivität aus dem Verlaufsstapel ...


Añadir android:noHistory="true" Attribut zu Ihrem <activity> im AndroidManifest.xml wie diese:

    <activity android:name=".MyActivity"
        android:noHistory="true">
    </activity>

9voto

GeetT Punkte 305

Für die künftige Forschung sollten Sie diesen Code ausprobieren.

Intent intent = new Intent(context, LoginActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
finish();

8voto

Pankaj Talaviya Punkte 3010

Verwenden Sie diesen Code, um eine neue Aktivität zu starten und alle anderen Aktivitätsstapel oder Backstacks zu schließen oder zu zerstören.

Intent intent = new Intent(this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);

7voto

Sujith Royal Punkte 724

Ich habe eine interessante Lösung gefunden, die helfen könnte. Ich habe dies in meinem onBackPressed() méthode.

finishAffinity();
finish();

FinishAffinity entfernt die Verbindung der bestehenden Aktivität zu ihrem Stapel. Und dann hilft finish Ihnen, die Aktivität zu beenden. Dadurch wird schließlich die Anwendung beendet.

7voto

Exigente05 Punkte 2143

In Kotlin ist es fast dasselbe wie in Java. Nur | Symbol wird ersetzt durch ou Text. Es wird also so geschrieben.

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK)

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