本文主要介绍ViewPager FragmentPagerAdapter中Fragment缓存的规则

可能需要在一个Activity中显示多个ViewPager,如GridView或ListView中以ViewPager做Item。
在Fragment的onCreateView函数中添加断点,结果发现只有第一个ViewPager的Fragment被初始化了

排查发现在FragmentPagerAdapter中的instantiateItem函数中FragmentManager以container的id加fragment的position为标记。导致第一个ViewPager的position初始化后进了缓存,第二个ViewPager的position1就直接从缓存中获取数据,查看FragmentPagerAdapter源码如下:


从上红圈标记的地方可以看出查找Fragment的规则,其中container.getId为ViewPager父View的id,position为fragment的位置。
针对上面的makeFragmentName规则,我们有两种解决方法:
1、自己复制FragmentPagerAdapter中的内容,重写一个PagerAdapter,修改其中的makeFragmentname规则,推荐使用此种方法。
2、改变上面container.getId,即ViewPager父View的idcontainerId。不过这种方式只是用于ViewPager较少的情况,否则复制很恶心的。。。

多个ViewPager引发的Fragment未初始化相关推荐

  1. 关于一个局部变量未初始化引发的项目异常退出问题

    类似如图一个函数,i为局部变量,未初始化,引起查询至此异常退出,偶尔加个打印,异常又没了. 拜托朋友查了许久,无意打印dst数组的i时发现越界到3000了,深刻教训:局部变量务必初始化,否则带来后续排 ...

  2. Go 知识点(08) — 对未初始化的 channel 进行读写操作

    1. 对未初始化的 channel 进行写操作 先看下面代码 func main() {var ch chan int // 只声明,并没有初始化fmt.Printf("ch is %v\n ...

  3. 友盟页面统计 - 关于Viewpager中的Fragment的生命周期

    Activity和Fragment各自理论上的生命周期 Activity的生命周期是较为经典也最清晰的,在此不表: Fragment从出现到广泛运用也有一段时间了,其标准生命周期也仅比Activity ...

  4. 【C++】C++11 STL算法(八):对未初始化内存的操作(Operations on uninitialized memory)、C库(C library)

    对未初始化内存的操作(Operations on uninitialized memory) 一.uninitialized_copy 1.原型: template< class InputIt ...

  5. 解决方法:ORA-24324 未初始化服务句柄

    安装oracle的时候有一步出现如下错误: ORA-24324:未初始化效力句柄     ORA-24323:不准许此值      ORA-28547:衔接效力器失利,也许是Oracle Net管制差 ...

  6. c语言中较常见的由内存分配引起的错误_内存越界_内存未初始化_内存太小_结构体隐含指针...

    1.指针没有指向一块合法的内存 定义了指针变量,但是没有为指针分配内存,即指针没有指向一块合法的内浅显的例子就不举了,这里举几个比较隐蔽的例子. 1.1结构体成员指针未初始化 1 2 3 4 5 6 ...

  7. LPC单片机IO口默认状态、复位状态、未初始化时输出高电平处理

    众所周知,STM32当复位以后,gpio默认是高阻状态,也就是浮空输入. 由STM32切换到LPC1788,发现LPC的IO未初始化时输出高电平,初始化后才能拉低,这样和STM32的设计就不兼容了. ...

  8. python变量初始化的位置不当、程序结果可能会出现问题_解决tensorflow由于未初始化变量而导致的错误问题...

    我写的这个程序 import tensorflow as tf sess=tf.InteractiveSession() x=tf.Variable([1.0,2.0]) a=tf.constant( ...

  9. 初始化全局变量实例说明C语言中初始化和未初始化的全局变量所在不同的段

    本文是一篇关于初始化全局变量的帖子 实例说明C语言中初始化和未初始化的全局变量地点不同的段 一个程序: Makefile: objs := bss.oall: bss bss: $(objs)gcc ...

最新文章

  1. 【Go语言】LiteIDE使用的个人使用方法
  2. 设计模式学习—Strategy(策略)
  3. SpringSecruity整合Oauth2 详解(一)
  4. Mysql 集成随机唯一id mysql unique number generation
  5. div内容横排 html_css如何让文字横向滑入?
  6. 欲求不满之 Redis Lua 脚本的执行原理
  7. java报错:java:xxx包不存在
  8. 计算机教师自检自查报告,信息技术教学工作自查报告
  9. jar启动报错:org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputExcept
  10. JavaWeb——mybatis一对一、一对多查询
  11. 韩国韩亚航空数万份乘客身份信息被泄露
  12. 图像局部特征(六)--斑点检测之SIFT算法原理总结补充
  13. 前端面试总结--数据结构与算法五
  14. CSDN日报180605——《认知升级是令我们变得优秀的重要基石》
  15. ubuntu 19.04 与win10双系统 搜狗输入法安装教程
  16. 服务器显示蜘蛛,新换服务器后蜘蛛都不来捉取文章链接怎么办?
  17. 网络设备配置与管理(华为)基础系列 20190307
  18. target=“_blank“有啥安全性问题?如何防范?
  19. linuxcnc 安装详细教程
  20. (二)库存计划-经济订货量(EOQ)

热门文章

  1. 2017年重要数据安全事件解读
  2. 正弦交流电电压电流峰值与有效值关系的推导
  3. Hyper-V 2016 系列教程12 Hyper-V 体系结构
  4. WPF 之 调用线程必须为 STA,因为许多 UI 组件都需要
  5. NSPredicate
  6. 浏览器标签栏滚动消息提示
  7. boost::timer
  8. ARKit如何将太阳系装进iPhone(二)
  9. 蓝桥杯 兰顿蚂蚁(模拟)
  10. Router通过DHCP上网配置方法