我有这段代码:
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;
}
非常自我解释,但我不明白的是给它一个捆绑的重点。我猜我从来没有真正利用它。 Android Doc对此(对于Fragments)的解释如下: http://developer.android.com/reference/android/app/Fragment.html#setArguments(android.os.Bundle) 建筑参数到底意味着什么?由于它从未使用过,我没有看到它的使用。任何解释都非常感激。感谢。
答案 0 :(得分:6)
它只是一种通用机制,可以附加您可能想要用来配置Fragment
或在操作期间读取的数据值,类似于您可以将Bundle
中的额外内容传递给一个新的Activity
来自Intent
。
但我同意,由于Fragment
可以使用其构造函数进行实例化,而Activity
不能,{API}的有用性可能会受到影响,因为您可以轻松配置{ {1}}在返回实例之前使用Fragment
内的setter方法和成员变量。例如,您的代码可以在您可以调用的名为newInstance()
的{{1}}上实现一个方法,您不需要将其作为参数传递。但是,如果该模型适合您的应用程序,则参数确实提供了将此信息存储为键/值数据的好方法。
关于Fragment
的参数的一个关键区别是它们被保留为已保存实例状态的一部分。因此,如果您的UI旋转或其他一些更改需要重新创建setTitle()
,则附加的参数Fragment
将被保留并传回新实例。
HTH