DailogFragment - getArguments/setArguments - 为什么在包中传递参数?

Tom*_*wel 5 android android-fragments android-dialog android-dialogfragment

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

Joe*_*nek 7

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

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

"经常"和"在某些情况下"会使其含糊不清.但是,如果不满足你的好奇心......那就是它的论点!