上次留下了兩個(gè)問題
1.在跳轉(zhuǎn)到其他頁面回來時(shí)吠各,會(huì)怎么樣?
2.在子Fragment中又有一個(gè)viewpager+Fragment又會(huì)怎么樣?
問題1
并不會(huì)怎樣,只是回來的時(shí)候不會(huì)去分發(fā)加載數(shù)據(jù)的事件而已嘖
所以我加上這樣一段代碼汉形,用一個(gè)變量去判斷,不需要可以不寫倍阐,但是我想想你跳轉(zhuǎn)了別的頁面概疆,回來數(shù)據(jù)Fragment數(shù)據(jù)應(yīng)該會(huì)變,所以分發(fā)一下
問題2
這里去除掉了其他log峰搪,為了看起來清楚點(diǎn)
我給TowFragment加了一個(gè)viewpager岔冀,里面有TowFragment1和2
進(jìn)入App可以看到,爹都還沒顯示概耻,兒子先加載了數(shù)據(jù)使套?
而且在之后的切換底部Tab,TowFragment里面的兩個(gè)兒子都無動(dòng)于衷鞠柄,只有剛打開App時(shí)加載了童漩,連停止加載的方法都沒調(diào)用到,根本就沒有事件分發(fā)到兒子那里去
所以我們必須要再做一些根據(jù)父親和兒子的狀態(tài)再做一些判斷
先解決第一個(gè)問題春锋,父Fragment還沒顯示,子Fragment就加載了數(shù)據(jù)差凹。這個(gè)問題很簡(jiǎn)單期奔,我們只需要在分發(fā)加載數(shù)據(jù)的事件時(shí),判斷一下是否有父Fragment危尿,且是否可見呐萌。
就可以了
根據(jù)Fragment源碼中的這個(gè)方法,可以解決上面的問題
比如谊娇,父Fragment不可見時(shí)直接退出方法肺孤,不準(zhǔn)分發(fā)
但是還有一個(gè)問題存在,就是不管怎么切換济欢,子Fragment都不會(huì)分發(fā)加載或停止加載數(shù)據(jù)的事件赠堵。這是為啥?法褥?
從一開始我們可以看到茫叭,在進(jìn)入HomeFragment時(shí),子Fragment也會(huì)分別調(diào)用兩次setUserVisibleHint方法
半等,在進(jìn)入前就把自己的可見狀態(tài)置為true揍愁。到底后面的分發(fā)事件無效了呐萨。
所以我決定在進(jìn)入他的父Fragment時(shí),再去調(diào)用一次分發(fā)事件莽囤,真正的加載子Fragment的數(shù)據(jù)谬擦,比如
可以看見切換都是正常的
最后到這里
這個(gè)懶加載的寫作思路就這樣結(jié)束了~ 接下來就是加上SmartRefresh控件去模仿微博的加載模式了(當(dāng)然只能簡(jiǎn)陋的模仿)