Android开发之Fragment的替换显示反复创建问题

一般写程序时我们都是得到FragmentManager,然后开启一个事务,然后进行Fragment的替换,然后提交事务。

//1.得到FragmentManger
        FragmentManager fm = getSupportFragmentManager();
//        //2.开启事务
        FragmentTransaction transaction = fm.beginTransaction();
//        //3.替换
        transaction.replace(R.id.fl_content, fragment);
//        //4.提交事务
        transaction.commit();

 

但是,在实际的开发中,这种方式会导致Fragment的频繁创建,消耗用户的流量,所有提出以下优化:

就是用Add()和Hide() ,讲之前的Fragment隐藏,然后把要显示的Fragment添加进去,当要显示之前那个Fragment的时候,直接show()出来就可以了。

private void switchFrament(Fragment from,Fragment to) {
        if(from != to){
            mContent = to;
            FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
            //才切换
            //判断有没有被添加
            if(!to.isAdded()){
                //to没有被添加
                //from隐藏
                if(from != null){
                    ft.hide(from);
                }
                //添加to
                if(to != null){
                    ft.add(R.id.fl_content,to).commit();
                }
            }else{
                //to已经被添加
                // from隐藏
                if(from != null){
                    ft.hide(from);
                }
                //显示to
                if(to != null){
                    ft.show(to).commit();
                }
            }
        }

    }

 

提示:记得在add()  Fragment的时候判断是否为null.

转载于:https://www.cnblogs.com/Godfunc/p/6433373.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值