2016-07-05 24 views
0

Wenn ich eine Aktivität A unter Verwendung FLAG_ACTIVITY_REORDER_TO_FRONT starte, und Intent intent = getIntent(); aufrufen, bekomme ich die Absicht, die für die erste Erstellung der Aktivität verwendet wurde und nicht die, die mit der FLAG_ACTIVITY_REORDER_TO_FRONT Flag erstellt wurde.Android REORDER_TO_FRONT Benutzer neu Absicht

Ich möchte die Anzeige basierend auf den Extras der Absicht ändern. Gibt es eine Möglichkeit, entweder die neu erstellte Absicht zu erhalten oder die Extras der alten Absicht zu ändern?

Edit: Angeforderte Beispiel

Start-Aktivität A mit Intent A und Extras A -> auf eine andere Aktivität gehen X -> Anrufaktivität A mit Absicht B (FLAG_ACTIVITY_REORDER_TO_FRONT) und Extras B

Jetzt in Aktivität A , ich möchte Intent B bekommen, wenn ich getIntent() nennen, aber ich habe immer Intent A. bekommen Es wäre auch in Ordnung sein, nur die Extras von A zu ändern

+0

Ich schaue durch die anderen Absicht Flags, die existieren und FLAG_ACTIVITY_RESET_TASK_IF_NEEDED sieht vielversprechend aus. Dies ist nur ein Schuss im Dunkeln, denn ich bin gerade nicht auf meinem Dev-Rechner: https://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_BROUGHT_TO_FRONT –

+0

Scheint, das Verhalten nicht zu ändern. Ich bekomme immer noch die Absicht von der ersten Schöpfung. – AljoSt

+0

Können Sie erklären, welches genaues Verhalten Sie wollen? Es ist wahrscheinlich klarer, wenn Sie ein Beispiel mit den Aktivitäten 'A', 'B', 'C' usw. geben und den gewünschten Fluss zwischen ihnen haben. –

Antwort

1

ok nach B, ich glaube, ich eine Lösung. Wenn Sie die Aktivität A mit dem Flag FLAG_ACTIVITY_CLEAR_TOP starten, wird alles auf dem Backstack über Aktivität A (Aktivität X in diesem Fall) zerstört und Aktivität A mit einer neuen Absicht gestartet. Ich habe das an meiner Maschine ausprobiert und es hat funktioniert.

Wenn Sie Aktivität X wollen dableiben, so dass Ihr Backstack sieht dann aus wie „X -> A“ Dann können Sie onNewIntent() in Aktivität A überschreiben die neue Absicht zu erfassen und festgelegt und halten FLAG_ACTIVITY_REORDER_TO_FRONT mit der Aktivität zu starten:

@Override 
protected void onNewIntent(Intent intent) { 
    super.onNewIntent(intent); 
    setIntent(intent); 
    // Parse intent info both here and in onCreate()! 
} 

Es genügt zu bemerken, dass, wenn Sie dies tun, und hin und her zwischen Aktivität X gehen und A Ihrem Backstack wird dann wie folgt aussehen: "X -> X -> X -> .... -> A" da X auf dem Backstack chillen wird und A sich weiter nach vorne bewegen wird.

+0

hinzugefügt Ging für die zweite Option, funktioniert perfekt, danke! – AljoSt