viewpager和fragment切換加載數據的問題

activity中須要顯示一個切換頁顯示3個不一樣的視圖數據,這裏須要使用viewpager+fragment實現切換。在fragment中須要在onstart或者onresume中初始化加載數據。可是viewpager在切換fragment時會調用下一個fragment的多個回調,好比:java

在加載Tab-A時會實例化Tab-B中fragment,依次調用:onAttachonCreate、onCreateViewonActivityCreatedonStart和onResume。一樣切換到Tab-B時也會初始化Tab-C中的fragment。可是fragment中的數據(如讀取的服務器數據)沒有相應清除,致使重複加載數據。緩存


解決方式:給pager設置一個緩存,服務器

mViewPager.setOffscreenPageLimit(3);

這樣在切換fragment時就不會重複加載數據。函數

tab在切換時沒用清除fragment中保存的數據能夠看出fragment沒有被從新建立,可是依次從新調用了以上的回調方法,給pagerview設置緩存量後在tab切換時沒有從新調用以上的回調函數。spa

ps:咱們在使用viewpager時會定義一個適配器adapter,其中實例化了一個fragment列表,因此在tab切換時fragment都是已經實例化好的,因此在切換標籤頁時是不會從新實例化fragment對象的,於是在fragment中定義的成員變量是不會被重置的。因此爲列表初始化數據須要注意這個問題。code

相關文章
相關標籤/搜索