多个viewpager可能产生的问题
由于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/
多个viewpager可能产生的问题的更多相关文章
- 踩石行动:ViewPager无限轮播的坑
2016-6-19 前言 View轮播效果在app中很常见,一想到左右滑动的效果就很容易想到使用ViewPager来实现.对于像我们常说的banner这样的效果,具备无限滑动的功能是可以用ViewPa ...
- Android ViewPager打造3D画廊
本文已授权微信公众号:鸿洋(hongyangAndroid)在微信公众号平台原创首发. 网上有很多关于使用Gallery来打造3D画廊的博客,但是在关于Gallery的官方说法中表明: This cl ...
- Android中Fragment和ViewPager那点事儿(仿微信APP)
在之前的博文<Android中使用ViewPager实现屏幕页面切换和引导页效果实现>和<Android中Fragment的两种创建方式>以及<Android中Fragm ...
- TabLayout + ViewPager
一.实现思路 1.在build.gradle中添加依赖,例如: compile 'com.android.support:support-v4:23.4.0'compile 'com.android. ...
- android内部培训视频_第三节(3)_常用控件(ViewPager、日期时间相关、ListView)
第三节(2):常用控件之ViewPager.日期时间相关.ListView 一.ViewPager 实例:结合PagerAdapter滑动切换图片 二.日期时间相关:AnalogClock\Dig ...
- 简单的ViewPager了解Scroller类
View滑动是自定义ViewGroup中十分常见的一个功能.Android提供了多种View滑动的方法. layout方法 offsetLeftAndRight()与offsetTopAndBotto ...
- PagerSlidingTabStrip介绍及使用,让ViewPager更绚丽
转载请注明出处http://blog.csdn.net/harryweasley/article/details/42290595,谢谢. 以前一直想着,ViewPager中间的那个横线怎么跟着屏幕的 ...
- 详细分析Android viewpager 无限循环滚动图片
由于最近在忙于项目,就没时间更新博客了,于是趁着周日在房间把最近的在项目中遇到的技术总结下.最近在项目中要做一个在viewpager无限滚动图片的需求,其实百度一下有好多的例子,但是大部分虽然实现了, ...
- 一行代码引入 ViewPager 无限循环 + 页码显示
(出处:http://www.cnblogs.com/linguanh) 前序: 网上的这类 ViewPager 很多,但是很多都不够好,体现在 bug多.对少页面不支持,例如1~2张图片.功能整合不 ...
- 使用ViewPager实现自动轮播
很多APP中都实现了类似引导页的自动轮播,不由得想到昨天的引导页上修改一下代码实现轮播. 其实大体上只需要添加一个线程循环执行就可以了. 项目已同步至:https://github.com/nanch ...
随机推荐
- 3D项目处理点选操作步骤
1.用notepad++模型的obj格式文件,查找到模型各个部分的名称,命名规则:g mesh......,把名字改为规则命名. 2.选择处理 #ifdef _DEBUG #pragma comm ...
- 製程能力介紹(SPC introduction) ─ Cpk之製程能力解釋
Cpk之製程能力解釋 Cpk就是綜合考慮精度與準度的製程能力指標. Cpk=(1-Ck)‧Cp 也就是在考慮Cp的同時,再考慮乘上一個(1-Ck)係數,去彌補Cp之不足,此係數最大時為1,也就是(Ck ...
- kafka学习(一)-背景及架构设计
概念和术语 消息,全称为Message,是指在生产者.服务端和消费者之间传输数据. 消息代理:全称为Message Broker,通俗来讲就是指该MQ的服务端或者说服务器. 消息生产者:全称为Mess ...
- The Suspects(并查集求节点数)
The Suspects Time Limit: 1000MS Memory Limit: 20000K Total Submissions: 28164 Accepted: 13718 De ...
- Java反射-简单应用
为了程序更好的维护和扩展,在面向对象思维的世界里,首先是面向接口编程,然后我们应该把做什么和怎么做进行分离. 以下我将用一个开晚会的样例来演示一下,终于达到的效果是:工厂+反射+配置文件实现程序的灵活 ...
- Android的MVC框架
http://www.cnblogs.com/wanghafan/archive/2012/07/20/2600786.html MVC是当前比较流行的框架,随便Google下,就可以发现几乎所有的应 ...
- 达内TTS6.0课件oop_day05
- 二、获取AccessToken
二.获取AccessToken 1.官方文档: access_token是微信官方公众号调用接口的全局唯一票据,开发者调用任何接口都需要使用access_token,由于access_token有效期 ...
- HOJ1008
#include<iostream> using namespace std; int main(){ ; ; ){ ; ; numTemp = N; ) && count ...
- WPF:向客户端发出某一属性值已更改的通知INotifyPropertyChanged接口
Person.cs using System.ComponentModel; namespace _01_INotifyPropertyChanged { class Person:INotifyPr ...