天天看點

多個ViewPager引發的Fragment未初始化

本文主要介紹ViewPager FragmentPagerAdapter中Fragment緩存的規則。

可能需要在一個Activity中顯示多個ViewPager,如GridView或ListView中以ViewPager做Item。

在Fragment的onCreateView函數中添加斷點,結果發現隻有第一個ViewPager的Fragment被初始化了。

多個ViewPager引發的Fragment未初始化
多個ViewPager引發的Fragment未初始化

從上紅圈标記的地方可以看出查找Fragment的規則,其中container.getId為ViewPager父View的id,position為fragment的位置。

針對上面的makeFragmentName規則,我們有兩種解決方法:

1、自己複制FragmentPagerAdapter中的内容,重寫一個PagerAdapter,修改其中的makeFragmentname規則,推薦使用此種方法。

2、改變上面container.getId,即ViewPager父View的idcontainerId。不過這種方式隻是用于ViewPager較少的情況,否則複制很惡心的。。。

繼續閱讀