ViewPager + Fragment重複銷燬載入檢視的解決辦法
阿新 • • 發佈:2018-12-17
因為專案裡面的ViewPager + Fragment只有三個碎片,然後就沒留意Fragment檢視的載入和銷燬的事情。只是最近要求要新增加一個碎片,我先加了一個空白的碎片,然後來回切換的時候發現檢視被反覆載入和銷燬了。就開始找方法解決。發現方法挺多的,記錄下來分享給大家。 首先之所以會出現這種情況是因為ViewPager有個緩衝機制,它裡面有個方法setOffscreenPageLimit();(這個方法指的是當前頁緩衝的左右數目,當然頭和尾兩頁除外,因為它們剛好一個左邊沒有,一個右邊沒有)如果不配置的話就是預設為1.配置為0的話也是會被拉成1的(這個可以看看它的原始碼,我不是很明白但是看了很多人分析的結果就是這樣的哈哈) 好來說解決方案: 一、將setOffscreenPageLimit()設定成你想要的數字。比如你有4個碎片,那你可以設定成3,這樣當你在載入第一頁的時候就把後面的也全部載入了,這樣不管你怎麼滑動偶不會建立也不會銷燬Fragment檢視了. 二、因為用ViewPager + Fragment一定會用到介面卡,所以可以重寫介面卡裡面的destroyItem方法,並把該方法註釋為空方法