Ich verwende die Android-Kompatibilitätsbibliothek, um Fragmente zu implementieren, und habe das Layoutbeispiel so erweitert, dass ein Fragment eine Schaltfläche enthält, die ein anderes Fragment auslöst.
Im Auswahlbereich links habe ich 5 auswählbare Elemente - A B C D E.
Jeder lädt ein Fragment (via FragmentTransaction:replace) in das Detailfenster -a b c d e
Jetzt habe ich das Fragment eum eine Schaltfläche erweitert , die ein weiteres Fragment e1auch im Detailbereich lädt . Ich habe dies mit der eonClick-Methode von fragment wie folgt gemacht:
FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
ft.replace(R.id.details_frag, newFrag);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.addToBackStack(null);
ft.commit();
Wenn ich folgende Auswahl treffe:
E - e - e1 - D - E
Dann ebefindet sich das Fragment im Detailbereich. Das ist in Ordnung und was ich will. Wenn ich jedoch backan dieser Stelle auf den Knopf drücke, geschieht nichts. Ich muss zweimal darauf klicken, weil e1es noch auf dem Stapel ist. Außerdem habe ich nach dem Klicken eine Nullzeiger-Ausnahme in onCreateView erhalten:
Um dieses Problem zu lösen, habe ich bei jeder A B C D EAuswahl Folgendes hinzugefügt :
FragmentManager fm = getActivity().getSupportFragmentManager();
for(int i = 0; i < fm.getBackStackEntryCount(); ++i) {
fm.popBackStack();
}
Sie fragen sich nur, ob dies die richtige Lösung ist oder ob ich etwas anderes tun sollte?