android viewpager fragment传值,Android开发中如何解决Fragment +Viewpager滑动页面重复加载的问题...

本文介绍了在Android开发中如何避免Fragment+ViewPager组合导致的页面重复加载问题。通过使用对象数组存储Fragment实例,仅在需要时加载,减少内存浪费和预加载带来的资源消耗。提供了一个示例代码展示如何实现这一优化策略。
摘要由CSDN通过智能技术生成

前言

之前在做一个Viewpager上面加载多个Fragment时总会实例化已经创建好的Fragmnet对象类似

viewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {

@Override

public Fragment getItem(int position) {

switch(position){

case 0:

fragments=new Fragmnet01();

break;

case 1:

fragments=new Fragmnet02();

break;

.....

}

return fragments;

}

@Override

public int getCount() {

return listTabs.size();

}

});

其实仔细想一下,这样是很不合理的,首先你一直实例化对内存是一种浪费另外Viewpager具有预加载性当我们加载某一个Fragmnet时它就会把它的左边和右边都会加载(开头和结尾例外。)所以为了防止重复加载浪费资源,我们可以使用一个对象数组来加载fragment,当每次位置为空的时候我们就可以在该位置上面加载一个布局具体代码

//定义一个对象数组并给定长度

fragments=new MyFragment[listTabs.size()];

viewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {

@Override

public Fragment getItem(int position)

{

//在这里判断如果Fragmnet[position]当前页面没有加载的话我们再次在上面加载

if(fragments[position]==null){

//这里只是写一个构造方法把值传到fragment里面

MyFragment my = MyFragment.getInstance(listTabs.get(position).getId());

fragments[position]=my;

}

return fragments[position];

}

@Override

public int getCount() {

return listTabs.size();

}

});

在fragment里面当然你也可以用bundler来传值。

public static MyFragment getInstance(int id){

MyFragment myFragment=new MyFragment();

Bundle bundle=new Bundle();

bundle.putInt("id",id);

myFragment.setArguments(bundle);

return myFragment;

}

以上所述是小编给大家介绍的Android开发中如何解决Fragment +Viewpager滑动页面重复加载的问题 ,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值