Ich habe ein Fragment innerhalb einer Gruppenaktivität und möchte es durch ein anderes Fragment ersetzen:
FragmentTransaction ft = getActivity().getFragmentManager().beginTransaction();
SectionDescriptionFragment bdf = new SectionDescriptionFragment();
ft.replace(R.id.book_description_fragment, bdf);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.addToBackStack(null);
ft.commit();
Es funktioniert einwandfrei, wenn es als separates Projekt ohne Verwendung einer Aktivitätsgruppe ausgeführt wird. In log cat funktioniert alles einwandfrei, da die Steuerung in getview () erfolgt. Es ist jedoch keine Ansicht sichtbar, es tritt nicht einmal eine Ausnahme auf. Ich möchte, dass das Buchdetailfragment angezeigt wird durch ein Abschnittsdetailfragment ersetzt werden.
XML des Buchdetailfragments hat die ID book_description_fragment und XML des Abschnittsbeschreibungsfragments hat die ID section_description_fragment.
Der obige Code befindet sich in der onClick-Methode eines Elements. Ich möchte, dass sich das Fragment ändert, wenn der Benutzer in der horizontalen Bildlaufansicht auf ein Element tippt.
quelle
onCreateView()
. Wie Sie also annehmen können, geht jeder Verweis auf das Fragment auf Ansichtsebene tatsächlich verloren. Sie können also grundsätzlich kein Fragment ersetzen, sondern die jetzt im Container vorhandenen Ansichten manuell entfernen und bei Bedarf stattdessen ein Fragment dort ablegen.Bitte sehen Sie diese Frage
Sie können nur ein " dynamisch hinzugefügtes Fragment " ersetzen .
Wenn Sie also ein dynamisches Fragment hinzufügen möchten, sehen Sie sich dieses Beispiel an.
quelle
Ich habe einen Kern mit gemacht der perfekten Methode zur Verwaltung Fragment Ersatzes und Lebenszyklus .
Das aktuelle Fragment wird nur dann durch ein neues ersetzt, wenn es nicht dasselbe ist und wenn es sich nicht im Backstack befindet (in diesem Fall wird es eingeblendet).
Es enthält mehrere Optionen, als ob das Fragment im Backstack gespeichert werden soll.
=> Siehe Gist hier
Wenn Sie diese und eine einzelne Aktivität verwenden, möchten Sie diese möglicherweise zu Ihrer Aktivität hinzufügen:
quelle
Verwenden Sie den folgenden Code in android.support.v4
quelle
Verwenden Sie diesen Code mit v4
quelle
Ich hoffe, es geht dir gut. Als ich anfing zu arbeiten, hatte
Android Fragments
ich auch das gleiche Problem. Dann las ich über 1- Wie man ein Fragment mit einem anderen wechselt. 2- Hinzufügen eines Fragments, wennFragment container
kein Fragment vorhanden ist.Nach einigen Forschungs- und Entwicklungsarbeiten habe ich dann eine Funktion erstellt, die mir in vielen Projekten bis jetzt hilft, und ich verwende diese einfache Funktion immer noch.
genieße deine Codezeit :)
quelle
Verwenden Sie ViewPager. Es ist Arbeit für mich.
quelle
Sie können diesen Code verwenden
oder Sie können diesen Code verwenden
quelle
In Kotlin können Sie Folgendes tun:
quelle
Sie können einfachen Code für die Transaktion verwenden
quelle
Ich ändere Fragmente dynamisch in einzeiligem Code.
Es funktioniert in jeder SDK-Version und AndroidX, als die
ich die Navigation verwende
BottomNavigationView
quelle