博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
多个viewpager可能产生的问题
阅读量:4946 次
发布时间:2019-06-11

本文共 838 字,大约阅读时间需要 2 分钟。

由于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不同,否则就可能产生类似的问题。

 

参考 :http://www.trinea.cn/android/android-source-code-analysis/multi-viewpager-to-fragment-not-init/

转载于:https://www.cnblogs.com/oscar1011/p/5272156.html

你可能感兴趣的文章
PCB 线路板人生
查看>>
shell 通过EOF在脚本中输入需要的用户名或密码
查看>>
添加 Android Framework 到 Adt
查看>>
PencilWang博客目录
查看>>
Sentinel spring-cloud-gateway adapter(1.6)异常错误之@EnableCircuitBreaker
查看>>
position
查看>>
struct模块
查看>>
网络流(最大流) CodeForces 546E:Soldier and Traveling
查看>>
[转]dpkg 和 rpm 的常用方法比较
查看>>
The kth great number(hdu4006+优先队列)
查看>>
浅谈微信小程序
查看>>
Drools(BRMS) 速成教程(上)
查看>>
[svc]通过ssh tunnel连接内网ECS和RDS
查看>>
界面图片
查看>>
[翻译]深入理解Win32结构化异常处理(三)
查看>>
Java集合之HashMap
查看>>
SQL: Case when then
查看>>
sql 改字段名
查看>>
认识CSS3 transform 属性
查看>>
notepad++ 中配置python解释器
查看>>