1

Ich habe eine einzige Activity Architektur, wo ich eine PreferenceFragmentCompat innerhalb einer anderen ViewGroup in der MainActivity laden. Benutzerdefinierte Navigation existiert innerhalb der MainActivity, so dass Sie die ViewGroup mit dem Fragment laden und weg von alles innerhalb derselben MainActivity navigieren können.Fragment zeigt nicht zum zweiten Mal, es ist

Das erste Mal, wenn ich zum ViewGroup navigiere, lädt die PreferenceFragmentCompat völlig in Ordnung. Wenn ich jedoch von der ViewGroup mit der PreferenceFragmentCompat und dann wieder zurück navigiere, wird die PreferenceFragmentCompat nachfolgende Zeiten nicht angezeigt. Die ViewGroup tut, aber es ist leer, wo das Fragment sein sollte. Ich kann durch Breakpoints/Logging sehen, dass das Fragment seinen Lebenszyklus durchläuft - es ist einfach nicht sichtbar.

Ein neues enthalten ViewGroup und ein neues PreferenceFragmentCompat Objektpaar wird jedes Mal, wenn ich zurück in die ViewGroup Ebene erstellt, so sollte es zu einem alten ViewGroup nicht angebracht werden, zu werden. Die Navigationsarchitektur ist zu kompliziert, um eine Nachricht schreiben, aber hier ist, wie ich hinzufüge, das Fragment in der enthaltenden ViewGroup Klasse jedes Mal: ​​

CustomPreferenceFragment fragment = new CustomPreferenceFragment(); 
FragmentManager fm = activity.getSupportFragmentManager(); 
FragmentTransaction ft = fm.beginTransaction(); 
ft.add(R.id.fragment_frame_container, fragment); 
ft.commit(); 

Hat jemand eine Ahnung, warum das Fragment möglicherweise nicht werden zeigen?

Antwort

1

Ich habe das Problem gefunden. Es war viel einfacher als ich erwartet hatte. Da jedes Mal ein neues ViewGroup erstellt wurde, wurde das Fragment zu dem alten ViewGroup hinzugefügt, bevor es durch das neue ersetzt werden konnte, da beide die Ansicht R.id.fragment_frame_container enthalten. Die Lösung bestand darin, nicht jedes Mal ein neues ViewGroup zu erstellen, wenn es bereits existierte.