Android - ViewPager+Fragment初始化问题
来源:互联网 发布:iapp轰炸机源码 编辑:程序博客网 时间:2024/04/28 12:22
Android应用开发中,经常会用到ViewPager + Fragment,虽然效果不错,但随之而来的还有一些问题,下面就说说其中的初始化问题。
ViewPager初始化时会预加载前后的2个页面,即使设置了setOffscreenPageLimit(0); 它至少也会预加载一个页面
但在实际场景中,可能我们不需要这个预加载的功能,这时我们就需要对其进行一些控制。
我使用的方法是setUserVisibleHint(boolean isVisibleToUser)
每次ViewPager预加载页面的时候,被预加载的Fragment都会调用这个方法,所以我就通过这个方法来控制Fragment里面的数据初始化
使用前提是Fragment页面的数量不是很多,设置setOffscreenPageLimit(所有Fragment的数量);
原因是如果不全部预加载,那么当滑动页面超出预加载范围之后,就会有页面被销毁,那么这个控制方法就失效了,当然,如果没有特殊的需求
不设置这个方法也不会有问题,主要看自己的需求。
具体方法如下:
public boolean canExcute = true;//为了onActivityCreated中setUserVisibleHint方法只执行一次
public boolean isFirstExcute = true;//标记页面是否是第一次加载,为了初始化只执行一次
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
if (canExcute) {//页面第一次加载时执行,以后不在执行
canExcute = false;
setUserVisibleHint(getUserVisibleHint());
}
}
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (canExcute) {//onActivityCreated方法执行之前,不让此方法执行
return;
}
if (isVisibleToUser && isFirstExcute) {// 页面可见并且是第一次加载
isFirstExcute= false;//标记页面已经加载过一次,以后不需要在执行
initData();//把你只需要初始化一次的数据写在这个方法里面
}
if (getUserVisibleHint()) {// 页面每次对用户可见时执行
} else {
}
}
以上方法不一定对所有场景都适用,大家使用时还是需要经过测试并改进。
- Android - ViewPager+Fragment初始化问题
- Android编程心得---ViewPager+Fragment篇(一)初始化ViewPager的一些问题
- viewpager+fragment(初始化时需要注意的几点问题)
- Android FragmentTabHost嵌套(ViewPager+Fragment)问题
- android解决fragment+viewpager状态保存问题
- Android-ViewPager+Fragment数据更新问题
- android 事件滑动问题 viewPager+fragment+listView
- android 解决fragment+viewpager+fragment滑动卡顿的问题
- Android中使用ViewPager+Fragment动态删除添加Fragment问题
- Viewpager + fragment,其中一些fragment不被保存在内存,切换导致初始化问题
- Viewpager+Fragment嵌套Viewpager+Fragment空白页问题
- ViewPager+Fragment问题
- viewpager添加fragment问题
- ViewPager+Fragment 使用问题
- ViewPager+Fragment 使用问题
- ViewPager+Fragment问题
- Android Activity+ViewPager(Fragment)+Fragment
- ViewPager+Fragment ViewPager中切换界面Fragment 初始化问题解决方案
- Java MD5与linux echo Md5不一致
- Spring
- BUG1
- 线程笔记
- 性能优化记录
- Android - ViewPager+Fragment初始化问题
- Django 和 Bootstrap3 的整合使用测试
- POJ 1035 Spell checker 字符串暴力
- NB-LOT是什么暨八月新实习开开开始
- 树莓派学习博客收集
- 装饰者模式
- 用非递归方式实现二叉树后序遍历
- 考完研后将深入学习的知识
- 掌握JavaScript函数的柯里化(转载)