多个ViewPager引发的Fragment未初始化
本文主要介绍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未初始化相关推荐
- 关于一个局部变量未初始化引发的项目异常退出问题
类似如图一个函数,i为局部变量,未初始化,引起查询至此异常退出,偶尔加个打印,异常又没了. 拜托朋友查了许久,无意打印dst数组的i时发现越界到3000了,深刻教训:局部变量务必初始化,否则带来后续排 ...
- Go 知识点(08) — 对未初始化的 channel 进行读写操作
1. 对未初始化的 channel 进行写操作 先看下面代码 func main() {var ch chan int // 只声明,并没有初始化fmt.Printf("ch is %v\n ...
- 友盟页面统计 - 关于Viewpager中的Fragment的生命周期
Activity和Fragment各自理论上的生命周期 Activity的生命周期是较为经典也最清晰的,在此不表: Fragment从出现到广泛运用也有一段时间了,其标准生命周期也仅比Activity ...
- 【C++】C++11 STL算法(八):对未初始化内存的操作(Operations on uninitialized memory)、C库(C library)
对未初始化内存的操作(Operations on uninitialized memory) 一.uninitialized_copy 1.原型: template< class InputIt ...
- 解决方法:ORA-24324 未初始化服务句柄
安装oracle的时候有一步出现如下错误: ORA-24324:未初始化效力句柄 ORA-24323:不准许此值 ORA-28547:衔接效力器失利,也许是Oracle Net管制差 ...
- c语言中较常见的由内存分配引起的错误_内存越界_内存未初始化_内存太小_结构体隐含指针...
1.指针没有指向一块合法的内存 定义了指针变量,但是没有为指针分配内存,即指针没有指向一块合法的内浅显的例子就不举了,这里举几个比较隐蔽的例子. 1.1结构体成员指针未初始化 1 2 3 4 5 6 ...
- LPC单片机IO口默认状态、复位状态、未初始化时输出高电平处理
众所周知,STM32当复位以后,gpio默认是高阻状态,也就是浮空输入. 由STM32切换到LPC1788,发现LPC的IO未初始化时输出高电平,初始化后才能拉低,这样和STM32的设计就不兼容了. ...
- python变量初始化的位置不当、程序结果可能会出现问题_解决tensorflow由于未初始化变量而导致的错误问题...
我写的这个程序 import tensorflow as tf sess=tf.InteractiveSession() x=tf.Variable([1.0,2.0]) a=tf.constant( ...
- 初始化全局变量实例说明C语言中初始化和未初始化的全局变量所在不同的段
本文是一篇关于初始化全局变量的帖子 实例说明C语言中初始化和未初始化的全局变量地点不同的段 一个程序: Makefile: objs := bss.oall: bss bss: $(objs)gcc ...
最新文章
- 【Go语言】LiteIDE使用的个人使用方法
- 设计模式学习—Strategy(策略)
- SpringSecruity整合Oauth2 详解(一)
- Mysql 集成随机唯一id mysql unique number generation
- div内容横排 html_css如何让文字横向滑入?
- 欲求不满之 Redis Lua 脚本的执行原理
- java报错:java:xxx包不存在
- 计算机教师自检自查报告,信息技术教学工作自查报告
- jar启动报错:org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputExcept
- JavaWeb——mybatis一对一、一对多查询
- 韩国韩亚航空数万份乘客身份信息被泄露
- 图像局部特征(六)--斑点检测之SIFT算法原理总结补充
- 前端面试总结--数据结构与算法五
- CSDN日报180605——《认知升级是令我们变得优秀的重要基石》
- ubuntu 19.04 与win10双系统 搜狗输入法安装教程
- 服务器显示蜘蛛,新换服务器后蜘蛛都不来捉取文章链接怎么办?
- 网络设备配置与管理(华为)基础系列 20190307
- target=“_blank“有啥安全性问题?如何防范?
- linuxcnc 安装详细教程
- (二)库存计划-经济订货量(EOQ)