gpt4 book ai didi

android - Android 中的 'new Fragment()' 和 'Fragment.getInstance()' 有什么区别?

转载 作者:太空狗 更新时间:2023-10-29 15:59:32 27 4
gpt4 key购买 nike

在android编程中,

当我们将 fragment 添加到特定布局时,

我们可以使用下面的代码 fragment

Fragment fragment = new SampleFragment();
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.content_layout, fragment);
fragmentTransaction.commit();

Fragment fragment = SampleFragment.getInstance();
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.content_layout, fragment);
fragmentTransaction.commit();

我无法理解 fragment 对象定义语句之间的区别。从某些来源,当像单例模式一样使用“Fragment.getInstance()”时,使用“getInstance(Bundle data)”方法参数将包数据传递给 fragment 。

你能告诉我有什么区别吗?

最佳答案

用于 Fragment 实例化的 getInstance() 是一种熟悉的设计模式,它封装了 fragment 的创建及其参数。这基本上意味着 Fragment 负责创建自己的实例,并且应该比仅调用 new Fragment() 更干净、更安全,因为您可以传递额外的数据/包并“强制”用户使用此方法。请注意,您仍然在 getInstance() 方法中调用 new Fragment(),它不会替换它。

public static SomeFragment newInstance(int a, boolean b) {
SomeFragment someFragment = new SomeFragment();

Bundle args = new Bundle();
args.putInt("a", a);
args.putBoolean("b",b);
.....
someFragment.setArguments(args);

return someFragment;
}

那样的话,您将只有一个地方可以创建参数包,而不是每次都想实例化 fragment 。

关于android - Android 中的 'new Fragment()' 和 'Fragment.getInstance()' 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41158396/

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