Ich habe eine FragmentTabHost im Layout eines meiner Fragmente (nennen wir es Elternfragment). Jetzt initialisiere ich jedes der Fragmente, die im Tabhost programmatisch in onCreateView von parentFragment gehen. Wenn das parentFragment erstellt wird, scheint alles zu funktionieren und es zeigt das Fragment der ersten Registerkarte korrekt an.Fragmente nicht sichtbar nach Tab-Schalter in verschachtelten FragmentTabHost
Aber sobald ich den Tab einmal wechsle, verschwinden die Fragmente (ich kann die Hintergrundfarbe des Tabhost sehen, aber keinen Inhalt des Tabcontent-Containers). Auch das erste Fragment ist weg, wenn ich wieder darauf zurückwechsle. Die Fragmente werden tatsächlich als meine Logging-Shows erstellt, aber sie sind nicht sichtbar.
Ich gehe davon aus, dass es mit dem (erneuten) Erstellen der Fragmente zu tun hat, da ich auch einen ViewPager mit einem FragmentPagerAdapter probiert habe. Dort könnte ich glücklich zwischen den ersten beiden Fragmenten wechseln (vorgeladen wegen setOffscreenseiteLimit() == 1), aber Fragmente (neu), die darüber hinaus erzeugt wurden, waren auch leer.
Irgendwelche Gedanken jemand ??
Hier einige meiner Code:
Ausschnitt des parentFragment XML:
...
<android.support.v4.app.FragmentTabHost
android:id="@android:id/tabhost"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TabWidget
android:id="@android:id/tabs"
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_alignParentTop="true" />
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="0dp"
android:layout_height="0dp" />
<FrameLayout
android:id="@+id/realtabcontent"
android:layout_below="@android:id/tabs"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
</android.support.v4.app.FragmentTabHost>
...
Ausschnitt des parentFragment XML:
...
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
Log.d(TAG, "onCreateView");
ViewGroup layoutContainer = (ViewGroup) inflater.inflate(R.layout.fragment_app_details_test, container, false);
tabHost = (FragmentTabHost) layoutContainer.findViewById(android.R.id.tabhost);
tabHost.setup(getActivity(), getChildFragmentManager(), R.id.realtabcontent);
tabHost.addTab(tabHost.newTabSpec("tab1").setIndicator("TAB1"),
FragmentSubTab1.class, null);
tabHost.addTab(tabHost.newTabSpec("tab2").setIndicator("TAB2"),
FragmentSubTab2.class, null);
tabHost.addTab(tabHost.newTabSpec("tab3").setIndicator("TAB3"),
FragmentSubTab3.class, null);
return layoutContainer;
}
...
Einfache Inflation Layout in Unter Registerkarte Fragment:
...
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
ViewGroup layoutContainer = (ViewGroup) inflater.inflate(R.layout.subfragment1, container,
false);
initUi(layoutContainer);
return layoutContainer;
}
...
So werden die Fragmente versteckt, wenn sich der Fokus ändert? – jsmith
Es stellt sich heraus, dass eine umgebende benutzerdefinierte ViewGroup dieses Problem verursacht hat, aufgrund der Art, wie onLayout und onMeasure behandelt wurden. – Till
@Till Haben Sie das geschafft? Das gleiche Problem jetzt bekommen. http://stackoverflow.com/questions/17009462/fragmenttabhost-on-tab-change-the-fragments-get-destroyed-and-disappear –