我有这段代码:
public static DateDialogFragment newInstance(Context context, DateDialogFragmentListener listener) {
DateDialogFragment dialog = new DateDialogFragment();
mContext = context;
mListener = listener;
/*I dont really see the purpose of the below*/
Bundle args = new Bundle();
args.putString("title", "Set Date");
dialog.setArguments(args);
return dialog;
}
非常不言自明,但我不明白的是给它一个 bundle 有什么意义。我想我从来没有真正利用过它。 Android Doc 对此(对于 Fragments)的解释如下: http://developer.android.com/reference/android/app/Fragment.html#setArguments(android.os.Bundle ) 构造论证到底是什么意思?由于它从未使用过,所以我看不到它的用途。非常感谢任何解释。谢谢。
最佳答案
它只是一种通用机制,供您附加数据值,您可能希望使用这些数据值来配置 Fragment
或在操作期间以其他方式读取,类似于您可能在 中传递额外内容的方式通过它的
bundle 到一个新的 Intent
将 Activity
。
不过,我确实同意,由于 Fragment
可以使用其构造函数实例化,而 Activity
不能,因此 API 的实用性似乎受到了损害,因为您可以就像在返回实例之前使用 newInstance()
中的 setter 方法和成员变量轻松配置 Fragment
一样。例如,您的代码可以在 Fragment
上实现一个名为 setTitle()
的方法,您可以调用该方法,而无需将其作为参数传递。但是,如果该模型适合您的应用程序,参数确实提供了一种将此信息存储为键/值数据的好方法。
Fragment
参数的一个关键区别是它们作为已保存实例状态的一部分保留。因此,如果您的 UI 旋转或某些其他更改需要重新创建 Fragment
,则附加的参数 Bundle
将被保留并交还给新实例。
HTH
关于android - DialogFragment 中的 setArgument 有什么意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11060538/