美文网首页
Fragment的add()和replace区别

Fragment的add()和replace区别

作者: zoustin | 来源:发表于2018-11-23 15:05 被阅读0次
    使用transaction.add() : 对两个Fragment进行切换
     //显示第一个fragment;
        private void initFragment1(){
            FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
            if(f1 == null){
                f1 = new MyFragment("消息");
                //第一种方式 使用add() 添加到事务中
                transaction.add(R.id.main_frame_layout,f1);
            }
            //隐藏所有Fragment
            hideFragment(transaction);
            //显示fragment1
           transaction.show(f1);
           transaction.commit();
     }
    
    使用add()情况下:两个Fragment的生命周期
    5bf7a4fc8485f
    使用transaction.replace() : 对两个Fragment进行切换
       //显示第一个fragment;
        private void initFragment1(){
            FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
            if(f1 == null) {
                f1 = new MyFragment("消息");
            }
            //第二种方式 使用replace() 替换到事务中
            transaction.replace(R.id.main_frame_layout, f1);
            //提交事务
            transaction.commit();
      }
    
    使用replace()情况下:两个Fragment的生命周期
    5bf7a4684b1ab
    总结:

    可以看到add()方法添加的Fragment没有发生销毁对象的情况,怎么切换还是原来的Fragment
    而replace()方法,会销毁前一个Fragment1,重新创建Fragment2

    相关文章

      网友评论

          本文标题:Fragment的add()和replace区别

          本文链接:https://www.haomeiwen.com/subject/zuyjqqtx.html