Ist das der richtige Weg, um den Stack Stack zu bereinigen, wenn man einen tief verschachtelten Stack hinterlässt?

Ich bin mit der Android Compatibility library zu implementieren, Fragmente und erweitert die layout-Beispiel so, dass ein fragment enthält eine Schaltfläche, die feuert aus einem anderen fragment.

In der Auswahl auf der linken Seite habe ich 5 wählbare Positionen - A B C D E.

Jeder lädt sich ein fragment (über FragmentTransaction:replace) im Detailbereich - a b c d e

Nun habe ich die erweiterte fragment e enthalten eine Schaltfläche, die Lasten bis einem anderen fragment e1 auch im Detailbereich. Ich habe dies auf fragment e's onClick-Methode wie folgt:

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 treffen Sie die folgende Auswahl:

E - e - e1 - D - E

Dann fragment e ist im Detailbereich. Das ist fein und was ich will. Allerdings, wenn ich auf den back - Taste an dieser Stelle tut es nichts. Ich klicke es doppelt, weil e1 immer noch auf dem Stapel. Außerdem wird nach klicken auf rund bekam ich einen null-Zeiger-Ausnahme in onCreateView:

Zu 'lösen' dieses problem ich habe Folgendes, wenn A B C D E ausgewählt ist:

FragmentManager fm = getActivity().getSupportFragmentManager();
for(int i = 0; i < fm.getBackStackEntryCount(); ++i) {
    fm.popBackStack();
}

Nur die Frage, ob das die richtige Lösung ist oder ob ich sollte, etwas anderes zu tun?

InformationsquelleAutor der Frage PJL | 2011-04-27

Schreibe einen Kommentar