現(xiàn)在好多應(yīng)用流行一種布局辞嗡。底部幾個(gè)工具欄選項(xiàng),上面也有類似tab的選項(xiàng)滞造。底部用RadioGroup控制fragment的切換续室。以上有五個(gè)fragment。
第一個(gè)fragment谒养,代表著首頁挺狰。
首頁又是一個(gè)類似tab的fragment,使用viewpager切換著兩個(gè)fragment买窟。
一般根據(jù)往常的經(jīng)驗(yàn)丰泊,如果要傳入fragmentmanager,都是getActivity().getSupportFragmentManager()或者getActivity().getFragmentManager()。
但是始绍,這樣會(huì)導(dǎo)致一個(gè)問題:數(shù)據(jù)丟失瞳购。
在fragment切換來回時(shí),其他單個(gè)的fragment里面的數(shù)據(jù)不會(huì)丟失亏推,而使用了viewpager的多個(gè)fragment切換的fragment會(huì)一團(tuán)漆黑学赛。
解決辦法:
用getChildFragmentManager() 替換getActivity().getSupportFragmentManager()。
總結(jié)就是:
getFragmentManager()是本級(jí)別管理者, getChildFragmentManager()是下一級(jí)別管理者.
這實(shí)際上是一個(gè)樹形管理結(jié)構(gòu).
在Fragment里面嵌套Fragment 的話吞杭,不要用getActivity().getSupportFragmentManager()或者getFragmentManager()
會(huì)在ViewPager中出現(xiàn)盏浇。有些Fragment 不會(huì)加載的情況,既ViewPager 加載 Fragment 空白頁的情況芽狗。
所以 Fragment里面嵌套Fragment 的話:一定要用getChildFragmentManager();
getFragmentManager()是所在fragment 父容器的碎片管理缠捌,
getChildFragmentManager()是在fragment 里面子容器的碎片管理。