大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章给大家分享的是有关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滑动页面重复加载的问题”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!