1. 需求
五個tab頁面,子頁面也有subTab的頁面;
父級标題: tab + ViewPager(5個BaseFragment) 父級tab滑動與ViewPager關聯的
子級标題:subtab + ViewPager(n個BaseFragment) 子級tab滑動與ViewPager關聯的
2. 問題1
有subTab頁面,切換子标題沒有更新,一直是第一次請求的副标題;資料請求混亂;
3.錯誤方案1
請求資料需要父tab的position,沒有傳入此position;是以一直是0;
腦子想到的第一個方法就是 通過父viewPage的selected的監聽中,用EventBus去傳遞position;(現在想想好傻,直接初始化的時候傳一個postion就ok,因為這個引發了一堆問題)
但是EventBus訂閱的方法在我的複用Fragment中,是以每次發送,會發送給我的五個頁面,此時五個頁面都走了這個方法,也分不清,具體需要請求哪個頁面了,這就是資料混亂的原因(而我此時在訂閱方法中還進行了網絡請求,各種判斷,現在看來很腦殘)
4.正确方案1
初始化Fragment時,父級Fragment時,直接傳入目前Fragment的position;請求資料需要的父級position問題解決
還有由于VierPager的緩存機制,會預設建立相鄰的Fragment,使用的時候尤其注意
5. 問題2
此時請求資料會請求兩次
6. 錯誤方案2
onViewCreated()方法中 初始化請求一次資料 TabLayout.setOnTabSelectedListener()中會請求一次; 标注:首次請求setOnTabSelectedListener也會走
7.解決方法2
初始化中不要去請求資料了