使用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
网友评论