Wo getChildFragmentManager () aufgerufen wird?

9

Problem

Laut den Google-Dokumenten:

  

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:

%Vor%

Also hatte ich (zum Beispiel) TestFragment , was wie folgt aussieht:

%Vor%

Am MainActivity initialisiere ich mein Fragment wie:

%Vor%

Dann übergebe ich das Fragment an ViewPager via FragmentPagerAdapter .

Endlich bekomme ich eine Ausnahme. Aber wenn ich nur:

%Vor%

Dann funktioniert es.

Frage

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.

    
AlexMomotov 21.09.2013, 17:29
quelle

3 Antworten

2

Kurze Antwort: Ich rufe an und verwende getChildFragmentManager() in der onViewCreated() Methode meines Fragments.

Zum Beispiel:

%Vor%     
ban-geoengineering 09.06.2016 13:36
quelle
0

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.

    
Amaury Esparza 11.12.2015 01:14
quelle
0

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%     
Mina Samy 09.06.2016 13:58
quelle