ViewPager中Fragment的重复创建、复用问题
在ViewPager中的Fragment的生命周期 随着页面的切换 当前的展示页相邻的页面生命周期一直在变化

一开始 刚进入Activity时候,ViewPager默认初始化好前两个Fragment(消息和任务)
消息 ->任务
05-09 14:47:39.593 31509-31509/tyh.com.tablayout E/TYH: 团队onAttach
05-09 14:47:39.593 31509-31509/tyh.com.tablayout E/TYH: 团队onCreate
05-09 14:47:39.593 31509-31509/tyh.com.tablayout E/TYH: 团队onCreateView
05-09 14:47:39.603 31509-31509/tyh.com.tablayout E/TYH: 团队onStart
05-09 14:47:39.603 31509-31509/tyh.com.tablayout E/TYH: 团队onResume
任务 ->团队
5-09 14:55:26.932 31509-31509/tyh.com.tablayout E/TYH: 消息onPause
05-09 14:55:26.932 31509-31509/tyh.com.tablayout E/TYH: 消息onStop
05-09 14:55:26.932 31509-31509/tyh.com.tablayout E/TYH: 消息onDestroyView
05-09 14:55:26.932 31509-31509/tyh.com.tablayout E/TYH: 部门onAttach
05-09 14:55:26.932 31509-31509/tyh.com.tablayout E/TYH: 部门onCreate
05-09 14:55:26.942 31509-31509/tyh.com.tablayout E/TYH: 部门onCreateView
05-09 14:55:26.942 31509-31509/tyh.com.tablayout E/TYH: 部门onStart
05-09 14:55:26.942 31509-31509/tyh.com.tablayout E/TYH: 部门onResume
团队 ->部门
05-09 14:57:18.371 31509-31509/tyh.com.tablayout E/TYH: 任务onPause
05-09 14:57:18.371 31509-31509/tyh.com.tablayout E/TYH: 任务onStop
05-09 14:57:18.371 31509-31509/tyh.com.tablayout E/TYH: 任务onDestroyView
部门 ->团队
05-09 15:00:50.918 31509-31509/tyh.com.tablayout E/TYH: 任务onCreateView
05-09 15:00:50.918 31509-31509/tyh.com.tablayout E/TYH: 任务onStart
05-09 15:00:50.918 31509-31509/tyh.com.tablayout E/TYH: 任务onResume
你会发现 当 Fragment完成onCreate之后再去切换的时候 只会执行onCreateView和onDestroyView方法不会再去onCreate
那么如何避免重复的创建和销毁呢 解决方案如下:
方案一(不推荐):
mViewPager.setOffscreenPageLimit(4);
方案二(推荐):
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
if(view==null){
view = inflater.inflate(R.layout.contentfragment,container,false);
tvContent = (TextView) view.findViewById(R.id.tv_content);
String string = getArguments().getString(KEY);
tvContent.setText(string);
tvContent.setTextColor(Color.BLUE);
tvContent.setTextSize(30);
}
return view;
}
@Override
public void onDestroyView() {
super.onDestroyView();
if(view!=null){
view.getParent().remove(view);
}
}
如此当重新创建Fragment的时候就会复用之前创建好的View不会重复创建
ViewPager中Fragment的重复创建、复用问题的更多相关文章
- FragmentManager中Fragment的重复创建、复用问题
当我们在Activity中使用 Fragment可以用FragmentManager去添加到对应个ViewGoup中使用 FragmentManager fragmentManager = getSu ...
- ViewPager中Fragment切换过程不被销毁的方法
背景:最近在写一个音乐播放器,然后一个ViewPager里面加载了四个Fragment,但是在切换过程中发现,Fragment总是被销毁,在网上查了一下,发现有两种办法可以保证Fragment不被销毁 ...
- ViewPager中Fragment无法显示的问题
问题描述: Actvitiy->Fragment1 ->Fragment2 Fragment1中有1个ViewPager,ViewPager里面有包括了2个Fragment. 当第一次执行 ...
- 友盟页面统计 - 关于Viewpager中的Fragment的生命周期
Activity和Fragment各自理论上的生命周期 Activity的生命周期是较为经典也最清晰的,在此不表: Fragment从出现到广泛运用也有一段时间了,其标准生命周期也仅比Activity ...
- Android中Fragment和ViewPager那点事儿(仿微信APP)
在之前的博文<Android中使用ViewPager实现屏幕页面切换和引导页效果实现>和<Android中Fragment的两种创建方式>以及<Android中Fragm ...
- 防止ViewPager中的Fragment被销毁的方法,更加流畅
在使用ViewPager与Fragment的时候,ViewPager会自动缓存1页内的数据,如下图: 当我们当前处在页面2的时候,页面1和页面3的View实际上已经创建好了,所以在我们拖动的时候是可以 ...
- 【原创】【ViewPager+Fragment】ViewPager中切换界面Fragment被销毁的问题分析
ViewPager中切换界面Fragment被销毁的问题分析 1.使用场景 ViewPager+Fragment实现界面切换,界面数量>=3 2.Fragment生命周期以及与Activ ...
- 转载【ViewPager+Fragment】ViewPager中切换界面Fragment被销毁的问题分析
ViewPager中切换界面Fragment被销毁的问题分析 原文链接 http://www.cnblogs.com/monodin/p/3866441.html 1.使用场景 ViewPager+ ...
- ViewPager中切换界面Fragment被销毁的问题
ViewPager中切换界面Fragment被销毁的问题分析 使用ViewPager+Fragment实现界面切换,当界面数量大于3时,出现二次滑动后数据消失的情况,下面由Fragment生命周期进行 ...
随机推荐
- SDWebImageRefreshCached
来源: http://blog.csdn.net/jiadabin/article/details/52129789 来源: http://blog.csdn.net/jiadabin/article ...
- Spring boot 的application.properties 全局配置
端口号.项目名称 application.properties: server.port=8888 server.context-path=/start 日志相关的配置 # 自定义日志配置路径 log ...
- 三、CSS样式——字体
概念: CSS字体属性定义文本的字体系列.大小.加粗.风格和变形. 属性 描述 font-family 设置字体系列 font-size 设置字体的大小 font-style 设置字体的风格 font ...
- 4-HBase
定义: HBase是一个分布式的.面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”.就像Bigtable利用了Goog ...
- Python Excel 多sheet 多条数据 自定义写入
pip install xlwt python excel 数据写入操作,处理网站数据导出以及不是太多数据的爬虫存储, 用处蛮多的轮子. (150+++++++++++++++++++++++++++ ...
- WPF DEV gridcontrol 自定义计算列(TotalSummary)
/// <summary> /// 自定义计算列 /// </summary> /// <param name="sender"></pa ...
- (Python基础)集合操作
集合是一个无序的,不重复的数据组合,它的主要作用如下: 去重,把一个列表变成集合,就自动去重了 关系测试,测试两组数据之前的交集.差集.并集等关系 以下代码演示了去重,增删改查,以及关系测试供参考学习 ...
- Machine.config 文件中节点<machineKey>的强随机生成
Machine.config 文件中节点<machineKey>的强随机生成 <machineKey>这个节允许你设置用于加密数据和创建数字签名的服务器特定的密钥.ASP.NE ...
- 修改select默认小箭头
在html中select下拉框默认的小箭头是这样的 有时候我们需要把这种小箭头用更好看的图片代替,就需要改变样式了. html 代码如下: <select class="comm-se ...
- windows快速搭建FTP工具Serv-U FTP Server
本文介绍一个简单的FTP工具,当然windows系统自带FTP工具,但是配置方法没有第三方工具来的简单可操作性好. 此工具用于搭建FTP环境,对于需要测试FTP上传功能具有极大帮助.例如球机抓拍图片上 ...