2016-08-05 23 views
1

Ich versuche, neue Wurzelaktivität zu setzen, min SDK 16, kompilieren/Ziel-SDK 24, Test auf Nexus 6 API 23 Emulator, hier ist das Szenario:Android, setzen neue Wurzelaktivität

Aktivität A ist die Hauptaktivität, definiert als Aktion = android.intent.action.MAIN und Kategorie = android.intent.category.LAUNCHER beim Manifest.

Von Aktivität A ich Registrierungsaktivität bewegen (Aktivität B), wenn ich fertig bin ich Aktivität bewegen C, jetzt Aktivität C im Manifest habe ich android:clearTaskOnLaunch="true" und android:noHistory="true", wenn ich bewegen sich von Aktivität B zu Aktivität C ich benutze:

Intent intent = new Intent(ActivityB.this, ActivityC.class); 
        // Btw I did try addFlags 
        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); 
        startActivity(intent); 
        finish(); 

Das Problem: aus irgendeinem Grund, wenn ich die Zurück-Taste bei Aktivität getroffen C I Aktivität zurückkehren A, möchte ich die App zu verlassen, ich, dass nach der Registrierung (Aktivität B) endet die neue Wurzelaktivität Aktivität sein C.

Lösung:

Innerhalb Aktivität C I onBackPressed außer Kraft setzen und innerhalb des übergeordneten Methode aufrufen I:

moveTaskToBack(true); 

Hinweis: nicht nennen super.onBackPressed(), wird es zu zurück Aktivität A und verschieben Sie die Aufgabe dann zurück (moveTaskToBack). Wenn Sie die App neu starten, ruft sie A auf ctivity AonResume und nicht onCreate, in meinem Fall die Umleitung so innerhalb onCreate gemacht wurde ...

Antwort

1

Eine Lösung, die ich dies durch zwingende backpress tat, war zu imitieren, so dass meine Benutzer nicht zurück springen können. Ähnlich können Sie die App beim Backpress-Klick schließen, indem Sie sie überschreiben und die App beenden.

+0

Ich habe diesen Weg versucht, hopped für eleganter Weise, konnte aber keinen finden, danke (Ich werde meine Frage mit dem Code bearbeiten). –

0

Versuchen Sie folgendes:

Intent intent = new Intent(ActivityB.this, ActivityC.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK) 
startActivity(intent); 

Auch, wenn Sie diesen Code anrufen aus ACTIVITYB, können Sie einfach das this Schlüsselwort verwenden.

EDIT: Bitte schauen Sie auf die Flaggen, die ich benutze, glaube ich nicht, dass Sie die richtigen verwenden.

+0

Logan, wenn du dir meine Frage ansiehst, habe ich es versucht und es hat nicht funktioniert –

Verwandte Themen