您的位置:首页 > 其它

多个viewpager可能产生的问题

2017-05-03 11:06 281 查看
由于Fragment的方便性,现在很多人开始大量使用Fragment。 今天使用时遇到各问题,记录下来并分享下。

 

使用Fragment都会用FragmentActivity ,特别是在用到ViewPager时。因为需要FramgmentManager,

而我这次有两个fragment中都用到了ViewPager。 其实也是开始的时候没考虑好。然后都使用的FragmentActivity的FramgmentManager去处理。  但是发现在第一个页面打开后,进入第二个页面,此时第二个页面上内容是空的,查看log,第二个页面的ViewPager 的子view的onCreatView 方法并没有调用,这是什么鬼。。

 

百度发现是PagerAdapter的instantiateItem 中使用tag从FramgmentManager中查询Fragment的,如果找到了,会直接使用之前的,而不会重新创建,

PagerAdapter的tag生成是根据你的pagerID 和 index 生成的。

 

说明什么呢?说明第一个页面中存在和第二个页面相同tag的Fragment 。也就是有两个fragment具有相同的父id,和index。

index有重复的很好理解,那么就是说明使用了相同的pagerID。

 

然后想起来当时直接复制的布局文件,所以id相同,改了id,问题迎刃而解。

这个问题在于俩个关键的地方:

1.使用了相同的FramgmentManager实例

2. ViewPager的id相同。

 

所以平时使用这种容器类的控件,尽量使id不同,否则就可能产生类似的问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: