Parçalarimdan birinin düzeninde bir FragmentTabHost var (buna parentFragment olarak adlandirilabilir). Şimdi, tabhost'ta programlanan her bir parçayı, parentFragment'in onCreateView öğesinde programlı olarak başlatıyorum. ParentFragment oluşturulduğunda her şey iyi çalışıyor gibi görünüyor ve ilk sekmenin parçasını doğru olarak gösteriyor.İç içe yerleştirilmiş sekme geçişinden sonra görünmeyen fragmanlar FragmentTabHost
Ancak, sekmeyi bir kez değiştirir geçmez, parçacıklar kaybolur (tabhost'un arka plan rengini görebilirim, ancak tabcontent-container'ın içeriğini göremiyorum). Ayrıca, ona geri döndüğümde ilk fragman gitti. Fragmanlar aslında günlüğüm şovlarım olarak yaratılıyor, ancak görünür değiller.
FragmentPagerAdapter ile bir ViewPager kullanmayı denediğimden, parçaların (yeniden) oluşturulmasının zorunlu olduğunu varsayalım. Orada ilk iki fragman arasında (setOffscreenPageLimit() == 1'den ötürü önceden yüklenmiş olarak) geçiş yapabilirdim, fakat bunun ötesinde yaratılan parçalar (yeniden) da boştu.
Herhangi bir kişi kim? İşte
olan kodumu bazıları: parentFragment en XMLÖzü: parentFragment en 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>
...
Özü: alt sekme en içinde
...
@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;
}
...
Basit düzen enflasyonu parça:
...
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
ViewGroup layoutContainer = (ViewGroup) inflater.inflate(R.layout.subfragment1, container,
false);
initUi(layoutContainer);
return layoutContainer;
}
...
Odaklanma değiştiğinde parçalar gizlenir mi? – jsmith
Çevreleyen özel bir ViewGroup'un, bu soruna neden olmadığına bakıldı. – Till
@Till Bunu çözmeyi başardınız mı? Aynı sorunu şimdi ele almak. http://stackoverflow.com/questions/17009462/fragmenttabhost-on-tab-change-the-fragments-get-destroyed-and-disappear –