gpt4 book ai didi

android - 有什么理由在第一次提交时使用 FragmentTransaction.replace 而不是 FragmentTransaction.add 吗?

转载 作者:行者123 更新时间:2023-11-29 21:31:47 26 4
gpt4 key购买 nike

当我回顾一个项目的旧代码时,我意识到整个项目都在使用 FragmentTransaction.replace 而不是 FragmentTransaction.add

public class UpgradePremiumFragmentActivity extends SherlockFragmentActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

...

if (savedInstanceState == null) {
UpgradePremiumFragment upgradePremiumFragment = UpgradePremiumFragment.newInstance();
getSupportFragmentManager().beginTransaction().replace(R.id.content, upgradePremiumFragment).commitAllowingStateLoss();
} else {
}
}

我想知道,在上述情况下是否有任何理由使用 replace 而不是 add ?由于 savedInstanceState 为 null,因此不应该有用于替换的旧 fragment 。

最佳答案

替换可防止您拥有多个相同的 fragment 。

如果您使用 Add, fragment 将简单地添加到 FragmentManager。替换将在添加之前删除任何其他具有相同 ID(占用相同容器)的 fragment 。

如果您 100% 确定没有以前的 fragment ,那么您可以安全地使用“添加”。

来自文档:

public abstract FragmentTransaction replace (int containerViewId, Fragment fragment, String tag)

Replace an existing fragment that was added to a container. This is essentially the same as calling remove(Fragment) for all currently added fragments that were added with the same containerViewId and then add(int, Fragment, String) with the same arguments given here.

关于android - 有什么理由在第一次提交时使用 FragmentTransaction.replace 而不是 FragmentTransaction.add 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19249825/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com