5

在官方示例http://developer.android.com/reference/android/app/DialogFragment.html#BasicDialog中,片段是使用静态工厂方法创建的,该方法将参数包装在 Bundle 中并调用传递参数的无参数构造函数使用 setArguments(bundle)- 所以我的问题是 - 为什么不简单地使用这些参数创建公共构造函数?使用 getArguments/setArguments 片段的方法的原因是什么 - 也许 Dialog 不能保证每次都重新创建,而是重复使用?如果是这样,那么它什么时候发生?提前致谢。

4

1 回答 1

7

强制执行无参数的默认构造函数模式允许系统在必要时动态地重新创建片段。从文档:

Fragment 的所有子类都必须包含一个公共的空构造函数。框架通常会在需要时重新实例化一个片段类,特别是在状态恢复期间,并且需要能够找到这个构造函数来实例化它。如果空构造函数不可用,在状态恢复过程中某些情况下会出现运行时异常。

“将经常”和“在某些情况下”使其含糊不清。但是满足不了你的好奇心……它是争论!

于 2012-04-25T14:02:05.380 回答