gpt4 book ai didi

android - 静态使用 newInstance() 方法的这段代码到底发生了什么?

转载 作者:行者123 更新时间:2023-11-29 00:38:53 27 4
gpt4 key购买 nike

除了使用 newIstance() 时,我几乎理解这段代码中的所有内容。谁能解释一下。非常感谢。

public class DateDialogFragment extends DialogFragment {

public static String TAG = "DateDialogFragment";

static Context sContext;
static Calendar sDate;
static DateDialogFragmentListener sListener;

public static DateDialogFragment newInstance(Context context, int titleResource, Calendar date){
DateDialogFragment dialog = new DateDialogFragment();

sContext = context;
sDate = date;

Bundle args = new Bundle();
args.putInt("title", titleResource);
dialog.setArguments(args);
return dialog;
}
}

我进行了编辑,我猜它在静态时的工作方式有所不同。我想这就是我感到困惑的原因。当它是静态的时,方法是如何改变的?我真的不明白为什么不在构造函数中这样做?

最佳答案

使用 fragment (任何扩展 Fragment 的类)时,您经常需要传递一些数据。这是通过使用接收 BundlesetArguments 方法实现的。由于这样做需要大量代码(创建包、考虑键名等),因此通常将数据传递给静态方法(通常称为 newInstance)。该方法的想法是创建参数包并将其传递给 Fragment;然后它返回 fragment ,您可以将它放在任何您想要的地方。

以这种方式使用 fragment 的另一个优点是,当您直接在 XML 布局中插入 fragment 时,必须有一个空的构造函数(或什么都没有)。如果您使用构造函数创建一个 fragment (以传递其必要的数据),您可能会收到一些关于缺少空构造函数的错误。

关于android - 静态使用 newInstance() 方法的这段代码到底发生了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10859226/

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