1. 程式人生 > >ViewPager + Fragment重複銷燬載入檢視的解決辦法

ViewPager + Fragment重複銷燬載入檢視的解決辦法

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

三、這個方法據說是最好的,就是複用Fragment的檢視(就像你用ListVIew介面卡裡面的convertView一個道理) 在這裡插入圖片描述這個方法要注意在onCreateView中初始化判斷條件不能少哦,在onDestroyView中將之取出來。怎麼樣是不是感覺跟ListView中的convertView一樣啊。 我是用的第三種,因為第一和第二有 明顯的缺陷。一次載入過多是很不好,特別是有耗時請求的時候。這個只是解決Fragment檢視反覆建立和載入的問題。後面我還會再寫一個延時載入的例子。