423 Stimmen

Beende alle vorherigen Aktivitäten

Meine Anwendung hat die folgenden Ablaufbilder:

Home->screen 1->screen 2->screen 3->screen 4->screen 5

Jetzt habe ich eine gemeinsame log out Schaltfläche in jedem Bildschirm

( Home/ screen 1 / screen 2 /screen 3/ screen 4 / screen 5 )

Ich möchte, dass, wenn der Benutzer auf die Schaltfläche "Abmelden" (von einem beliebigen Bildschirm) klickt, alle Bildschirme beendet werden und ein neuer Bildschirm Log in wird geöffnet.

Ich habe fast alle ausprobiert FLAG_ACTIVITY um dies zu erreichen. Ich gehe auch durch einige Antworten in Stackoverflow, aber nicht in der Lage, das Problem zu lösen. Meine Anwendung ist auf Android 1.6 so nicht in der Lage zu verwenden FLAG_ACTIVITY_CLEAR_TASK

Gibt es eine Möglichkeit, das Problem zu lösen?

3voto

Samuel Quiroz Punkte 137

Ich schätze, ich bin spät dran, aber es gibt eine einfache und kurze Antwort. Es gibt eine finishAffinity()-Methode in Activity, die die aktuelle Aktivität und alle übergeordneten Aktivitäten beenden wird, aber es funktioniert nur in Android 4.1 oder höher.

Für API 16+, verwenden Sie

finishAffinity();

Für unter 16, verwenden Sie

ActivityCompat.finishAffinity(YourActivity.this);

Hoffentlich hilft das!

shareedit antwortete am 27. Mai '18 um 8:03 Uhr

Akshay Taru

2voto

Gabriel Negut Punkte 13530

Wenn Sie den Benutzer in screen 1 und von dort gehen Sie zu den anderen Bildschirmen, verwenden

Intent intent = new Intent(this, Screen1.class);
intent.addFlags(FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

2voto

Asad Rao Punkte 3108

Einfach, wenn Sie den Anmeldebildschirm verlassen, nicht wenn Sie den Anmeldebildschirm beenden.

Und bei allen weiteren Aktivitäten verwenden Sie dies für die Abmeldung:

final Intent intent = new Intent(getBaseContext(), LoginScreen.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
context.startActivity(intent);

Es funktioniert perfekt.

1voto

pirooz jenabi Punkte 179

Ich habe diesen Weg gefunden, er löscht den gesamten Verlauf und beendet

Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);
Intent intent = new Intent(getApplicationContext(), SplashScreen.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

finish();
System.exit(0);

0voto

priyankvex Punkte 5490

Ich habe diese Lösung gefunden, die auf jedem Gerät trotz API-Level funktioniert (sogar für < 11)

Intent intent = new Intent(getApplicationContext(), LoginActivity.class);
ComponentName cn = intent.getComponent();
Intent mainIntent = IntentCompat.makeRestartActivityTask(cn);
startActivity(mainIntent);

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