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();
这就是重载与不重新加载的区别。理解了本质就简单多了。

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值