Ich habe Probleme beim Verwenden oder Verstehen, wie das Entfernen von FragmentTransactions aus dem Backstack die benutzerdefinierten Animationen handhabt. Insbesondere erwarte ich, dass es die “out” -Animation aufruft, aber es scheint nicht so zu sein.
Ich habe eine einfache Methode, um eine Fragmenttransaktion (FragmentTransaction) zu handhaben, bei der ich ein Fragment hinzufüge und einen benutzerdefinierten Übergang anwende, damit es ein-/ausgeblendet wird. Ich füge dies auch dem Backstack hinzu, damit der Benutzer diese Transaktion mit der Zurück-Schaltfläche rückgängig machen kann und im Wesentlichen zu dem Zustand navigiert, bevor das Fragment hinzugefügt wurde.
protected void changeFragment() {
FragmentTransaction ft = fm.beginTransaction();
ft.setCustomAnimations(android.R.anim.fade_in, android.R.anim.fade_out);
ft.add(R.id.fragment_container, new TestFragment());
ft.addToBackStack(null);
ft.commit();
}
Alles funktioniert großartig, wenn man sich vorwärts bewegt, aber wenn der Benutzer auf die Schaltfläche „Zurück“ klickt, werden die Übergangsanimationen nicht umgekehrt. Ich hatte erwartet, dass beim Entfernen des Fragments die Ausblendanimation verwendet wird. Stattdessen scheint es herauszuspringen (ohne Animation) und dann scheint der Container einzublenden. Ich bin mir nicht sicher, ob genau das passiert, aber das Fragment wird definitiv nicht ausgeblendet.
Meine Anwendung verwendet die Kompatibilitätsbibliothek, um Fragmentunterstützung hinzuzufügen, aber ich gehe davon aus, dass dies auch für Honeycomb (Android-11) gilt. Weiß jemand, ob ich hier nur etwas falsch mache oder ob ich einfach zu viel erwarte? Idealerweise möchte ich die Fragmente ähnlich wie Gmail (auf dem Xoom) animieren, um vorwärts zu gehen, indem ich auf eine Nachricht klicke, und dann zurück, indem ich die Zurück-Schaltfläche verwende. Vorzugsweise muss ich die Zurück-Schaltfläche nicht überschreiben und mit meinem eigenen Fragmentzustand Schritt halten, da ich mehrere “Transaktionen” haben könnte, aus denen ich mich zurückziehen möchte, und ich bin kein Fan davon, Räder neu zu erfinden.
Auch in der Android Developers Group gefragt: http://groups.google.com/group/android-developers/browse_thread/thread/1136a3a70fa0b6e9
Ich bin auch auf dieses Problem gestoßen und habe hier einen Fehlerbericht eingereicht code.google.com/p/android/issues/…
– Damian
20. März 2011 um 0:35 Uhr
Bitte markieren Sie den obigen Fehlerbericht.
– Damian
20. März 2011 um 0:36 Uhr
Markiert. Danke, dass du das als Boog eingereicht hast. Ich wollte mir vorher noch mal ein Bild davon machen.
– Kelly Merrell
22. März 2011 um 22:25 Uhr
… und der Fehler wurde behoben. Der Fix kam für die Version 3.1 zu spät; es wird in einer kommenden Version enthalten sein.
– Chet Haase
20. Mai 2011 um 3:16 Uhr
@Chet: Könnten Sie bitte die Details des Fixes als Antwort posten, damit wir dies von der Liste der unbeantworteten Antworten streichen können? Vielen Dank.
– Bill die Eidechse
24. Juni 2011 um 20:59 Uhr