5

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; 
    } 
... 
+0

Odaklanma değiştiğinde parçalar gizlenir mi? – jsmith

+0

Çevreleyen özel bir ViewGroup'un, bu soruna neden olmadığına bakıldı. – Till

+1

@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 –

cevap

1

önce FragmentTabHost ele değil ama (burada Doc: http://developer.android.com/guide/topics/ui/actionbar.html#Tabs) uygulamanızda sekme gezinmesini sağlamak için Eylem Çubuğu yöntemi setNavigationMode (ActionBar.NAVIGATION_MODE_TABS) kullanan önermek istiyorum Önerilen bu yöntem daha az iş gibi görünüyor ve daha az parça tutucu kullanıyor. Temel olarak sekmelerinizi örnekleyin, onları backstack'a ekleyin ve onTabSelected veya onTabUnselected yöntemleri ile seçilen sekmeye göre bunları gösterin/gizleyin.

Yardım edin.

+0

Katılıyorum. Ama ne yazık ki istenen tasarım/düzen nedeniyle bir TabHost kullanmak zorundayım ... – Till

İlgili konular