用getChildFragmentManager解決Fragment巢狀Fragment資料丟失的問題

王世暉發表於2016-05-03

如下圖所示的佈局,外邊的紅色大框是個fragment,中間的小框是個viewpager,裡邊包含了若干的fragment。再次進入外邊這個frament的時候,會出現中間viewpager中fragment資料丟失的問題,整個顯示是一個空白,textview的內容全部不見了。


在Fragment裡面巢狀Fragment 的話,不要用getActivity().getSupportFragmentManager()或者getFragmentManager()
會在ViewPager中出現。有些Fragment 不會載入的情況,既ViewPager 載入 Fragment 空白頁的情況。

所以   Fragment裡面巢狀Fragment 的話:一定要用getChildFragmentManager();


getFragmentManager到的是activity對所包含fragment的Manager,而如果是fragment巢狀fragment,那麼就需要利用getChildFragmentManager()了。

getFragmentManager()是所在fragment 父容器的碎片管理,
getChildFragmentManager()是在fragment  裡面子容器的碎片管理。


相關文章