3

我有这段代码:

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 对此(片段)的解释在这里:http: //developer.android.com/reference/android/app/Fragment.html#setArguments (android.os.Bundle ) 构造参数到底是什么意思?由于它从未使用过,我看不到它的用途。任何解释都非常感谢。谢谢。

4

1 回答 1

6

它只是一种通用机制,您可以附加您可能想要用于配置Fragment或在操作期间以其他方式读取的数据值,类似于您如何通过它将额外的 aBundle传递给新的。ActivityIntent

然而,我确实同意,因为 aFragment可以使用它的构造函数来实例化,而 anActivity不能,API 的有用性可能会受到影响,因为您可以在返回实例之前轻松配置 a Fragmentusing setter 方法和内部的成员变量。newInstance()例如,您的代码可以在被Fragment调用对象上实现一个setTitle()您可以调用的方法,并且您不需要将其作为参数传递。但是,如果该模型适合您的应用程序,参数确实提供了将此信息存储为键/值数据的好方法。

关于 a 的参数的一个关键区别Fragment是它们作为已保存实例状态的一部分保留。因此,如果您的 UI 旋转或某些其他更改需要Fragment重新创建,Bundle附加的参数将被保留并返回给新实例。

高温高压

于 2012-06-16T03:50:16.837 回答