永发信息网

如何让ViewPager+Fragment来回切换时数据不重复加载

答案:1  悬赏:30  手机版
解决时间 2021-03-02 07:40
如何让ViewPager+Fragment来回切换时数据不重复加载
最佳答案
提供一个方案,通过动态管理ViewPager的缓存个数来解决即可。。
@Override
public void onPageSelected(int position) {
Fragment fragment = fragments[position];
//判断是否滑动到了第二个界面,假如是那么加载4个界面,前后各两个,随着postion递增
if(position>=2){
viewpager.setOffscreenPageLimit(position);
}
}
}
但是这样的操作有很大的BUG,当postion=2时,ViewPager会首先移除原先0位置的Fragment,再从新添加,并且也没有解决缓存过多问题。于是,在经过失败后我想出了第二个方案,可不可以自己写一个FragmentViewPager对Fragment进行管理呢,让FragmentViewPager不执行移除原先的Fragment。
MyFragmentViewPager
public class MyFragmentPagerAdapter extends PagerAdapter {
private Fragment[] fragments;
private FragmentManager manager;
public MyFragmentPagerAdapter(FragmentManager fm, Fragment[] fragments) {
super();
manager=fm;
this.fragments = fragments;
}
@Override
public int getCount() {
return fragments.length;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
Fragment fragment = fragments[position];
//判断当前的fragment是否已经被添加进入Fragmentanager管理器中
if (!fragment.isAdded()) {
FragmentTransaction transaction = manager.beginTransaction();
transaction.add(fragment, fragment.getClass().getSimpleName());
//不保存系统参数,自己控制加载的参数
transaction.commitAllowingStateLoss();
//手动调用,立刻加载Fragment片段
manager.executePendingTransactions();
}
if (fragment.getView().getParent() == null) {
//添加布局
container.addView(fragment.getView());
}
return fragment.getView();
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
//移除布局
container.removeView(fragments[position].getView());
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
怎么向老师问好
杉杉来了有第二部吗?有和它差不多的电视剧吗
怎么修改仙剑4里的人物模型?
新前程电脑学校(北四条)地址有知道的么?有点
【任他明月下西楼】求几句诗词就像任他明月下
长方形的长是4分之3分米,比宽多5分之1分米,
没有签字,只有手印的遗嘱有效吗?老人已过世
被狗咬了打疫苗了可以吃韭菜炒蛋吗
民生堂大药房怎么去啊,有知道地址的么
齐秦的《往事随风》的这首歌,歌词谁能告诉我
硅油和巴西棕桐腊对身体有没有坏处
煲汤锅的插头一直插着浪费电吗
火车票在线咨询杭州到西安每天都有车次吗?
楼华建筑装饰材料商行在什么地方啊,我要过去
金冠东路在什么地方啊,我要过去处理事情
推荐资讯
登录时要填写户名和密码什么是户名
北京奥林匹克花园三期南区南门地址在什么地方
腕式欧姆龙血压计测量血压准确吗
下面这句话中有三处语法错误,请一一指出并改
91.5怎么大写
追女生要帮女生 冲话费吗?
创园房产博源分公司地址在哪,我要去那里办事
为什么战争期间中国会有那么多汉奸?
关于宜昌市地震的.看到别人的日志,说2010年六
谁有tvb女人俱乐部和大大闹广昌隆粤语百度云
为什么 Mac 的鼠标滚轮方向与 PC 相反
电信新号码必需使用三个月?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?