1. 程式人生 > >fragment中巢狀viewpager,vierpager中有多個fragment,不顯示 ...

fragment中巢狀viewpager,vierpager中有多個fragment,不顯示 ...

現在好多應用流行一種佈局。底部幾個工具欄選項,上面也有類似tab的選項。


底部用RadioGroup控制fragment的切換。以上有五個fragment。

第一個fragment,代表著首頁。首頁又是一個類似tab的fragment,使用viewpager切換著兩個fragment。

 private void InitViewPager(View parentView) {
       mPager = (ViewPager) parentView.findViewById(R.id.vPager);
       fragmentsList = new ArrayList<Fragment>();


       fragment1 = new SortHotFragment();
       fragment2 = new SortNewFragment();


       fragmentsList.add(fragment1);
       fragmentsList.add(fragment2);
       
       mPager.setAdapter(new MyFragmentPagerAdapter(getActivity().getSupportFragmentManager()

, fragmentsList));
       mPager.setCurrentItem(0);
       mPager.setOnPageChangeListener(new MyOnPageChangeListener());
 }

一般根據往常的經驗,如果要傳入fragmentmanager,都是紅色字型部分。

但是,這樣會導致一個問題:資料丟失。

在fragment切換來回時,其他單個的fragment裡面的資料不會丟失,而使用了viewpager的多個fragment切換的fragment會一團漆黑。

解決辦法:

將紅色字型部分,用getChildFragmentManager() 替換。

mPager.setAdapter(new MyFragmentPagerAdapter(getActivity().getChildFragmentManager(), fragmentsList));
mPager.setCurrentItem(0);
mPager.setOnPageChangeListener(new MyOnPageChangeListener());

之前一直在忙,才發現很多網友留言請求程式碼,非常抱歉。現在寫了一個簡單的demo,現將下載地址貼在下面。

討論群:192562009