码迷,mamicode.com
首页 > 其他好文 > 详细

【Fragment精深系列7】Fragment切换优化

时间:2015-05-27 01:01:20      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:

一、Fragment+RadioGroup

??在项目中需要进行Fragment的切换,一直都是用replace()方法来替换Fragment:然后总感觉切换的时候有些卡顿。

1、以前的代码:

radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup radioGroup, int checkID) {
                switch (checkID) {
                    case R.id.rabt01:
                    if (searchFragment == null) {
                        searchFragment = new SearchFragment();   
                        getSupportFragmentManager().beginTransaction().hide().add(R.id.linnerlayout, searchFragment).commit();
                    }
                        break;
                    case R.id.rabt02:
                        downFragment = new DownFragment();
                        getSupportFragmentManager().beginTransaction().replace(R.id.linnerlayout, downFragment).commit();
                        break;
                    case R.id.rabt03:           
                        listenFragment = new ListenFragment();
                        getSupportFragmentManager().beginTransaction().replace(R.id.linnerlayout, listenFragment).commit();
                        break;
                    case R.id.rabt04:
                        myFragment = new MyFragment();
                        getSupportFragmentManager().beginTransaction().replace(R.id.linnerlayout, myFragment).commit();
                        break;
                }
            }
        });

2、原因分析:

??因为replace每次都会重新调用fragment的onCreateView()方法,浪费时间。

3、解决方法:

??正确的切换方式是add(),切换时hide(),add()另一个Fragment;再次切换时,只需hide()当前,show()另一个。这样就不会重复调用onCreateView函数了。

??FragmentTransactioin 可以用来添加,删除fragment,也可以控制fragment的显示和隐藏。

??这是如果调用addToBackStack(null),此时的状态就会被保存在回退栈,按返回键的时候就会显示出栈顶的。

Android 优化Fragment防止页面多次inflate:http://www.th7.cn/Program/Android/201411/311607.shtml

4、代码改进

在不同Fragment之间切换的方法:http://www.th7.cn/Program/Android/201503/408512.shtml

需要维护一个全局的变量来记录当前的fragment。另外需要做一些判断,可以提取成方法的。

对Fragment切换的优化:http://www.tuicool.com/articles/iEfIvqb

二、ViewPager+Fragment

Fragment的陷阱:http://mobile.51cto.com/abased-446691.htm

关于fragment+viewpager的优化:http://www.bubuko.com/infodetail-648897.html

【Fragment精深系列7】Fragment切换优化

标签:

原文地址:http://blog.csdn.net/a910626/article/details/46039223

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!