Nehmen wir an, ich habe eine Aktivität, die zwei FrameLayouts enthält (nennen wir sie FrameA und FrameB), die ihrerseits chaque ein Fragment enthalten (nennen wir sie jeweils FragmentA1 und FragmentB1). Nun übertrage ich eine Reihe von einzelnen Fragmenttransaktionen mit einem Code ähnlich dem folgenden...
getFragmentManager()
.beginTransaction()
.replace(frameId, fragment)
.addToBackStack(null)
.commit();
... so dass ich FragmentA1 in FrameA durch FragmentA2 ersetze, dann ersetze ich FragmentB1 in FrameB durch FragmentB2, dann ersetze ich FragmentA2 in FrameA durch FragmentA3, dann ersetze ich FragmentB2 in Frame2 durch FragmentB3, und der Endzustand sieht aus wie das Bild oben (wo nur FragmentA3 und FragmentB3 sichtbar sind).
Wenn ich richtig verstanden habe, wie der Rückwärtsstapel funktioniert, wird das Drücken von "Zurück" das Ploppen der Fragmente zwischen FrameA und FrameB verschachteln (so wie ich sie hinzugefügt habe).
Weiß jemand, ob es möglich ist, die letzte Transaktion auf FrameA oder FrameB selektiv zu löschen? (d.h. wenn ich "Pop FrameA" drücke, dann würde FrameA von FragmentA3 zu FragmentA2 zurückgeführt werden und wenn ich stattdessen "Pop FrameB" drücke, dann würde FrameB von FragmentB3 zu FragmentB2 zurückgeführt werden)
Nachtrag: Ich weiß, dass ich das zuletzt zu einem bestimmten FrameLayout hinzugefügte Fragment mit der
FragmentManager.findFragmentById(int framelayoutId)
Methode, aber der Aufruf vonFragmentTransaction.remove(fragment).commit()
entfernt nur das Fragment aus der Ansicht und führt die Ansicht nicht zu dem zuvor angezeigten Fragment zurück.