android - DialogFragment 中的 setArgument 有什么意义?

标签 android bundle

我有这段代码:

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 到一个新的 Activity

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

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

HTH

关于android - DialogFragment 中的 setArgument 有什么意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11060538/

相关文章:

java - 领英整合

php - Symfony2 : --reinstall issue

iOS 无线加密配置文件传送

asp.net-mvc - ScriptBundle ("~/scripts/jquery-{version}.js"中的 {version} 是什么)

php - Symfony 2 - 多种形式

java - 如何确定列表中的选择百分比

android - 如何将特定类放入主 DEX 文件?

android - 在 Google Paging Library 3 中没有任何滚动的情况下,Api 调用不会一次又一次地停止调用

c# - 当调试设置为 false 时,ASP.Net MVC4 包用于更少的文件不被渲染

android - 用 '&' 切换两个值