2012-10-12 166 views
1

我有一些FragmentsList Collection用於ViewpagerFragmentStatePagerAdapter。我只使用getItem(){return list.get(index;}getCount(){return list.size()}。如果我想在適配器中替換該列表,我使用不同的片段加載另一個列表,請撥打notifyDataSetChanged()並將適配器重新設置爲viewpager以使其發生。 這工作正常。防止FragmentStatePagerAdapter不破壞片段

但是,如果我做了這個片段集更改以前的片段是通過PagerAdapter調用onDestroy()破壞了。現在我想知道是否有可能阻止onDestroy調用?或者我必須使用onSavedInstanceState()加載之前的碎片及其狀態嗎?

我只是搜索一些不同的方法來恢復由於適配器的變化而消失的片段的狀態。如果有人對此有所瞭解,分享一些想法會很高興。如果有必要,我可以提供代碼。

也許是一個很好的信息:我不使用PagerAdapter來實例化碎片。我在將列表加載到適配器之前執行此操作。

回答

5

現在我想知道它是否有可能阻止onDestroy調用?

使用FragmentStatePagerAdapter完整整點是允許的Android摧毀未使用的片段。您應該使用FragmentPagerAdapter代替。

+1

該信息的Thx。比我得到的文件錯誤,因爲「..可能被摧毀..」。我試試FPA。我已經使用函數saveState()和restoreState()達到了我的目標。 –

+0

@SteveBenett你可以發佈你的樣本嗎? – handrenliang

3

我在昨天提出了同樣的問題。

所以我找到了另一個解決方案。

我重寫適配器類中的destroyItem(ViewGroup容器,int位置,Object對象)。

和更改工作不super.destroyItem ..

我不知道該解決方案是更好的解決方案,但它肯定對我有所幫助。