多个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不同,否则就可能产生类似的问题。
使用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不同,否则就可能产生类似的问题。
相关文章推荐
- 多个viewpager可能产生的问题
- 自定义ViewGroup (2)支持滑动,并处理多指触摸可能产生的跳动问题
- Android在ScrollView中嵌套ViewPager以及ListView的可能出现的问题以及解决方案
- 自定义ViewGroup (2)支持滑动,并处理多指触摸可能产生的跳动问题
- viewpager + fragmentpageradapter 切换fragment产生的问题
- Fragment中嵌套viewPager产生问题
- view.post执行时机以及可能产生的内存泄露问题
- 自定义 viewpager 解决viewpager 嵌套到其他滚动父控件时候冲突的问题
- 完美解决Android里面scrollview嵌套及listview嵌套viewpager的滑动冲突问题的简单方法
- ViewPager + TabLayout组合默认选择第一项的问题
- Android ViewPager被嵌套在ScrollView中不显示的问题的解决方案
- 更换ViewPager中的Adapter后Fragment不更新问题
- SwipeRefreshLayout(下拉刷新)嵌套ViewPager时产生的滑动(不畅)冲突
- 解决双ViewPager嵌套的事件分发和去掉viewpager滑动问题
- ViewPager中嵌套Fragment不显示问题
- Android 当可缩放的View用ViewPager显示时 左右滑动冲突问题
- ViewPager为相邻页面设置间距并配置背景色出现白色细线问题的解决方案
- Android ViewPaper使用FragmentPagerAdapter出现的FragmentManagerImpl为空的问题
- 解决 viewpager fragment 切换 Fragment被销毁的问题
- 使用Fragment作为Item的ViewPager不更新问题.