在官方示例http://developer.android.com/reference/android/app/DialogFragment.html#BasicDialog中,使用静态工厂方法创建片段,该方法在Bundle中包装参数并调用no-args构造函数,使用setArguments(bundle)传递args - 所以我的问题是 - 为什么不简单地用这些参数创建公共构造函数?使用getArguments / setArguments片段的方法的原因是什么 - 可能是Dialog不能保证每次都重新创建,但重用?如果是的话那么什么时候发生? 提前谢谢。
答案 0 :(得分:7)
执行无参数,默认构造函数模式允许系统在必要时动态地重新创建片段。来自文档:
Fragment的所有子类都必须包含一个公共空构造函数。框架通常会在需要时重新实例化一个片段类,特别是在状态恢复期间,并且需要能够找到此构造函数来实例化它。如果空构造函数不可用,则在状态恢复期间的某些情况下将发生运行时异常。
“将经常”和“在某些情况下”使其模糊不清。但是,如果不满足你的好奇心......那就是争论!