2016-06-18 8 views
0

Ich habe 2 Fragmente (Frag A, Frag B), die in Multi-Panels in Landscape mit verschiedenen Container-ID (R.id.containerA, R.id.containerB) angezeigt werden.Entfernen eines bestimmten Fragments aus Backstack

Mein Bildschirm Fluss für erstes Fragment ist FragA-> FragA1-> FragA2

Mein Bildschirm Fluss für zweites Fragment ist FragB-> FragB1

ich jedes Fragment bin Zugabe zu Backstack. Also habe ich etwa 5 Fragmente im Backstack.

Die tatsächliche Reihenfolge der Navigation ist FragA-> FragB-> FragA1-> FragB1-> FragA2

Wenn ich jetzt Taste zurück, ich will FragB1 zuerst von Backstack statt FragA2 knallte werden. Ich weiß, dass Fragmente in einem Stapel verwaltet werden, aber wie wird mit diesem bestimmten Mehrbereichs-Szenario umgegangen?

Sollte ich Reflexion wie in diesem Beitrag erwähnt verwenden? Android Reorder Fragment Backstack

Weitere Alternativen?

Antwort

-1

Wenn Sie einfach FragB1 anstelle von FragA2 erhalten möchten, können Sie überprüfen, indem Sie den Namen des Fragments erhalten und dann einen Schritt zurückgehen, wenn der Name des Fragments FragA2 lautet. Sie können den Namen mit dem folgenden Code abrufen:

FragmentManager.BackStackEntry backEntry=getFragmentManager().getBackStackEntryAt(getActivity().getFragmentManager().getBackStackEntryCount()-1); 
String str=backEntry.getName(); 
+0

Nach dem Abrufen des Namens, ist es möglich, nur Frag B1 aus? Ich denke A2 wird auch geknallt, da Backstack ein LIFO ist. – RisingUp

+0

Per Definition, ja A2 wäre auch zum Zeitpunkt Pop B1 ausgeblockt worden. Aber was Sie tun können, ist A2 in den Stapel zurück zu legen, wenn Sie einen Verweis darauf haben. – ucsunil

Verwandte Themen