Android之Fragment的切换不对Fragment进行重新加载

开发的时候,有时候Fragment的切换,是不需要对原先的Fragment进行重新加载的。而Fragment的界面是既可以进行重新加载,也可以不进行重新加载。

每次重新加载的话,我们是使用的replace来进行fragment的替换的。

如果,不对fragment的数据进行重新加载的话,那么就用add来添加fragment,显示的时候用show,切换的时候用hide掉当前的,show切换的目标。

具体的实现代码如下:

private FragmentManager fm;
private FragmentTransaction ft;
//之前显示的fragment
public Fragment mContent, fragment_in, fragment_qm, fragment_se;
//三个fragment
fragment_in = new MakePlanFragment();
fragment_qm = new CourseFragment();
fragment_se = new MakePlanFragment();
setDefaultFragment(fragment_in);
设置默认的fragment的显示。没有切换的时候显示的fragment。

public void setDefaultFragment(Fragment fragment) {
    fm = getFragmentManager();
    ft = fm.beginTransaction();
    ft.add(R.id.fragment_content, fragment).commit();
    mContent = fragment;
}
//切换fragment的显示隐藏
public void switchContent(Fragment to) {
    if (mContent != to) {
        fm = getFragmentManager();
        ft = fm.beginTransaction();
        if (!to.isAdded()) {    // 先判断是否被add            ft.hide(mContent).add(R.id.fragment_content, to).commit(); // 隐藏当前的fragmentadd下一个到Activity        } else {
            ft.hide(mContent).show(to).commit(); // 隐藏当前的fragment,显示下一个
        }
        mContent = to;
    }
}
上面的这个switchContent的方法就是切换fragment的方法封装。在使用的地方,直接传入我们需要的目标fragment即可。如下:

switchContent(fragment_in);
传参为我们要切换的目标fragment。这样就实现了我们的切换fragment,但是不重新进行加载。


如果要进行重新加载,关键代码如下:

fm = getFragmentManager();
ft = fm.beginTransaction();
ft.replace(R.id.fragment_content, fragment_in);
ft.commit();
这就是重载与不重新加载的区别。理解了本质就简单多了。


版权声明:本文为qq_21139343原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。