Ho un FragmentTabHost nel layout di uno dei miei frammenti (chiamiamolo parentFragment). Ora, inizializzo tutti i frammenti che si trovano nel tabhost a livello di codice in onCreateView di parentFragment. Quando viene creato il parentFragment tutto sembra funzionare correttamente e mostra il frammento della prima scheda correttamente.Frammenti non visibili dopo il cambio scheda in nidificato FragmentTabHost
Ma non appena si passa da una scheda all'altra, i frammenti scompaiono (posso vedere il colore di sfondo del tabhost, ma non il contenuto del contenitore di contenuto della tabella). Anche il primo frammento è scomparso quando ritornai ad esso. I frammenti vengono effettivamente creati come mostra il mio log, ma non sono visibili.
Suppongo che abbia a che fare con (ri) creare i frammenti, poiché ho anche provato a utilizzare un ViewPager con un FragmentPagerAdapter. Lì potrei passare felicemente tra i primi due frammenti (precaricato a causa di setOffscreenPageLimit() == 1), ma anche i frammenti (ri) creati oltre questo erano vuoti.
Qualche idea a qualcuno ??
Ecco alcuni del mio codice:
estratto di XML di parentFragment:
...
<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>
...
estratto di XML di parentFragment:
...
@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;
}
...
layout semplice inflazione in sub scheda di frammento:
...
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
ViewGroup layoutContainer = (ViewGroup) inflater.inflate(R.layout.subfragment1, container,
false);
initUi(layoutContainer);
return layoutContainer;
}
...
Quindi i frammenti si nascondono quando il focus cambia? – jsmith
Si scopre che un ViewGroup personalizzato circostante stava causando questo problema a causa del modo in cui è stato gestito suLayout e suMisura. – Till
@Till Sei riuscito a risolvere questo? Ottenere lo stesso problema ora. http://stackoverflow.com/questions/17009462/fragmenttabhost-on-tab-change-the-fragments-get-destroyed-and-disappear –