300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > android viewpager fragment传值 Android开发中如何解决Fragment +Viewpager滑动页面重复加载的问题...

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

时间:2023-03-12 08:42:56

相关推荐

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

前言

之前在做一个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滑动页面重复加载的问题 ,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。