Laut den Google-Dokumenten:
%Vor%Sie können jetzt Fragmente in Fragmente einbetten. Dies ist nützlich für a Vielzahl von Situationen, in denen Sie dynamisch und wiederverwendbar platzieren möchten UI-Komponenten in eine UI-Komponente, die selbst dynamisch ist und wiederverwendbar. Wenn Sie beispielsweise ViewPager verwenden, um Fragmente zu erstellen Wischen Sie nach links und rechts und konsumieren Sie einen Großteil des Bildschirmplatzes kann jetzt Fragmente in jede Fragmentseite einfügen. Um ein Fragment zu verschachteln, rufen Sie einfach getChildFragmentManager () für das Fragment auf, in das Sie ein Fragment einfügen möchten. Dies gibt a zurück FragmentManager, den Sie wie gewohnt verwenden können Top-Level-Aktivität zum Erstellen von Fragmenttransaktionen. Beispielsweise, Hier ist ein Code, der ein Fragment aus einem vorhandenen Fragment hinzufügt Klasse:
Also hatte ich (zum Beispiel) TestFragment
, was wie folgt aussieht:
Am MainActivity
initialisiere ich mein Fragment wie:
Dann übergebe ich das Fragment an ViewPager
via FragmentPagerAdapter
.
Endlich bekomme ich eine Ausnahme. Aber wenn ich nur:
%Vor%Dann funktioniert es.
Wo soll ich getChildFragmentManager()
method in meinem Fragment aufrufen? Was mache ich falsch?
Wenn Sie ein gutes Beispiel für die Verwendung neuer verschachtelter Android-Fragmente haben, teilen Sie uns bitte den Link. Ich würde mich sehr für Ihre Hilfe bedanken.
Kurze Antwort: Ich rufe an und verwende getChildFragmentManager()
in der onViewCreated()
Methode meines Fragments.
Zum Beispiel:
%Vor%Eigentlich habe ich gerade in folgendem Fall gebraucht.
Ich habe versucht, eine Map in einen ViewPager einzufügen. Wie Sie vielleicht wissen, sind die "Seiten" im ViewPager Fragmente, daher konnte ich diesen Code nicht verwenden Beispiel mit Karten aus einer Aktivität . Ich habe versucht, das SupportMapFragment von der Aktivität zu erhalten, die Dinge wie:
%Vor%Aber mapView war immer null, daher stürzt meine Anwendung ab.
Ich fand die folgende Antwort und arbeitet sofort.
Dies kann ein nützliches Beispiel für die Verwendung von getChildFragmentManager () sein
Ich hoffe, das kann hilfreich sein.
Gemäß den Dokumenten , diese Methode:
Geben Sie einen privaten FragmentManager zum Platzieren und Verwalten von Fragmenten zurück innerhalb dieses Fragments.
Damit Sie es verwenden können, wenn Sie ein neues Fragment zu Ihrem vorhandenen Fragment hinzufügen / ersetzen möchten, sollten Sie zuerst Ihre TestFragment-Transaktion festschreiben und dann das innere Fragment hinzufügen. versuche so etwas:
%Vor%