笔记:fragment重复加载和fragment在viewpage中预加载的问题
2016-05-06 13:14
302 查看
场景:
viewpage中嵌套fragment来回切换时,fragment每次都会执行oncreate()方法重新加载;
因为viewpage有预加载的机制,在fragment还未显示时,就会提前加载
解决方案
-重复加载问题:
- 在fragment的onCreateView()方法中判断是否已经创建:
-预加载问题:
- 根据当前fragment的UI是否显示来判断是否加载数据,使用setUserVisibleHint()方法,fragment可 见时才进行数据加载操作,即Fragment的懒加载。但是此方法会先与onCreateView()方法执行,因此在视图未初始化的时候做处理,会有空指针的异常。结合上面避免重复加载的方法,当已经有初始化的数据时data != null,说明已经初始化视图,可以加载数据
viewpage中嵌套fragment来回切换时,fragment每次都会执行oncreate()方法重新加载;
因为viewpage有预加载的机制,在fragment还未显示时,就会提前加载
解决方案
-重复加载问题:
- 在fragment的onCreateView()方法中判断是否已经创建:
if (fragmentView == null) { fragmentView = inflater.inflate( R.layout.fragment_layout, container, false); initData(); } ViewGroup parent = (ViewGroup) fragmentView.getParent(); if (parent != null) { parent.removeView(fragmentView); } return fragmentView;
-预加载问题:
- 根据当前fragment的UI是否显示来判断是否加载数据,使用setUserVisibleHint()方法,fragment可 见时才进行数据加载操作,即Fragment的懒加载。但是此方法会先与onCreateView()方法执行,因此在视图未初始化的时候做处理,会有空指针的异常。结合上面避免重复加载的方法,当已经有初始化的数据时data != null,说明已经初始化视图,可以加载数据
@Override public void setUserVisibleHint(boolean isVisibleToUser) { super.setUserVisibleHint(isVisibleToUser); if (getUserVisibleHint() && data != null) { } else { } }
相关文章推荐
- Android 框架炼成 教你如何写组件间通信框架EventBus
- 3、在Ajax于Java的交互过程中,加入加载图片
- 完全理解Gson
- android学习路线图
- [NOIP2004]虫食算 T4 简单搜索+剪枝
- 【HUSTOJ】1074: 拐角VII
- 函数重载总结
- 实时pvp(皇室战争)网络同步研究
- “秒”转换成“时间”
- 第十一周实践项目2-存储班长信息的学生类
- row_number() over(partition by '分组' order by '日期')
- 23种设计模式(3):抽象工厂模式
- 判断自守数
- Android AdapterView View的复用机制分析
- leetcode.264. Ugly Number II
- Linux下的sudo及其配置文件/etc/sudoers的详细配置说明
- 用印申请
- 机型适配的一些小技巧
- HOW TO REMOTELY DEBUG APPLICATION RUNNING ON TOMCAT FROM WITHIN INTELLIJ IDEA
- ElasticSearch(一)-安装