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

一、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

阅读更多

扫码向博主提问

下一个五年

博客专家

非学,无以致疑;非问,无以广识
去开通我的Chat快问
个人分类: android提高
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭