android – DialogFragment中setArgument的重点是什么?

我有这段代码:

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或在操作期间读取的数据值,类似于您可以通过它的Intent将Bundle中的extras传递给新Activity.

但我确实同意,由于Fragment可以使用其构造函数进行实例化,而Activity不能,但API的有用性可能会受到影响,因为您可以使用setIn方法和newInstance()中的成员变量轻松配置Fragment在返回实例之前.例如,您的代码可以在Fragment上实现一个名为setTitle()的方法,您可以调用它,而不需要将其作为参数传递.但是,如果该模型适合您的应用程序,则参数确实提供了将此信息存储为键/值数据的好方法.

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

HTH

上一篇:JDK与Eclipse版本号


下一篇:如何在纯Python应用程序包中更改OSX菜单栏中的应用程序名称?