您好,登录后才能下订单哦!
这篇文章给大家分享的是有关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滑动页面重复加载的问题”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。