Android ViewPager和TabLayout連用時,去除ViewPager預加載

ViewPager和TabLayout連用時,如何去除ViewPager預加載?
最主要的就是用到這個方法:setUserVisibleHint(boolean isVisibleToUser)

在Fragment中添加如下代碼:

//Fragment的View加載完畢的標記
private boolean isLoading = false;

//Fragment對用戶可見的標記
private boolean isUIVisible;

//setUserVisibleHint和lazyLoad兩個方法是為了去除viewPager+fragment的懶加載

@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
    super.setUserVisibleHint(isVisibleToUser);
    //isVisibleToUser這個boolean值表示:該Fragment的UI 用戶是否可見
    if (isVisibleToUser) {
        isUIVisible = true;
        lazyLoad();//調用下面的方法
    } else {
        isUIVisible = false;
    }
}

private void lazyLoad() {
    //這里進行雙重標記判斷,是因為setUserVisibleHint會多次回調,并且會在onCreateView執(zhí)行前回調,必須確保onCreateView加載完畢且頁面可見,才加載數(shù)據(jù)
    if (!isLoading && isUIVisible) {
        loadInfo();//加載數(shù)據(jù)的方法
        //數(shù)據(jù)加載完畢,恢復標記,防止重復加載
        isLoading = true;
        isUIVisible = false;
    }
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容