跳到主要内容

Fragment 的 replace 和 add 方法的区别?

参考答案:

Fragmentreplace()add() 方法在 Android 中用于处理 Fragment 事务,但它们的行为有一些区别。

  1. replace()

replace() 方法用于替换容器中的现有 Fragment。当你使用 replace() 方法时,容器中的当前 Fragment 会被完全移除,并由新的 Fragment 替代。这意味着新的 Fragment 会占据整个容器的空间,并且如果之前的 Fragment 是可见的,那么新的 Fragment 将会替代它。

例如,如果你有一个 FrameLayout 容器,并希望用一个新的 Fragment 替换其中的现有 Fragment,你可以这样做:

FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
MyFragment myFragment = new MyFragment();
fragmentTransaction.replace(R.id.container, myFragment);
fragmentTransaction.commit();
  1. add()

add() 方法用于向容器中添加一个新的 Fragment。与 replace() 不同,add() 不会移除容器中的现有 Fragment,而是将新的 Fragment 添加到容器中。这意味着你可以同时有多个 Fragment 在同一个容器中。但是,你需要注意的是,新添加的 Fragment 会占据容器的一部分空间,这取决于你如何设置它的布局参数。

例如,如果你希望在一个 FrameLayout 容器中添加一个新的 Fragment,而保留其中的现有 Fragment,你可以这样做:

FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
MyFragment myFragment = new MyFragment();
fragmentTransaction.add(R.id.container, myFragment);
fragmentTransaction.commit();

总结

  • replace() 用于替换容器中的现有 Fragment。
  • add() 用于向容器中添加一个新的 Fragment,而保留现有 Fragment。

在选择使用哪种方法时,你应该考虑你的应用需求和 Fragment 的布局要求。