我的程序的一个Activity中有三个tab,就像微信那样,每个tab对应一个fragment,第一个Fragment的布局内容是一个ViewPager,ViewPager的适配器是继承自FragmentPagerAdapter。
在程序开始运行时页面正常显示,但把tab切换到第二个,再切换回第一个,页面就不能正常显示了。
通过log打印发现适配器中的getItem()方法没有执行,在网上找了很多方法都说把FragmentPagerAdapter换成FragmentStatePagerAdapter就好了,或许是使用场景不同,这种方法在我这并不适用。
解决方案:
原因是fragment里面又嵌套了fragment,所以在创建viewpager的适配器的时候传参为getChildFragmentManager()而不是getFragmentManager(),因为如果传参为getFragmentManager()则表示将父Fragment的FragmentManager传给了子Fragment,所以无法显示数据来源
getChildFragmentManager()可以在Fragment的子类中直接取得
Fragment+ViewPager+Fragment 第二次进入页面不显示
最新推荐文章于 2023-05-30 17:57:27 发布