使用以下方法初始化片段有什么区别: -
- 静态
newInstance(String a, int b)
方法和捆绑参数。 - 与多参数构造函数
MyFragment(String a, int b)
相比,前提是我还添加一个无参数构造函数MyFragment()
?
如果它与系统初始化片段的方式有关,那么onSavedInstanceState(Bundle bundle)
与MyFragment.newInstance(String a, int b)
的目的是什么?
当操作系统需要销毁并重新创建片段时,它会使用空构造函数创建它的新实例。
您在 newInstance(( 中创建和设置的捆绑包由操作系统为您保存和恢复,并且仅包含片段的初始参数。
您在 onSavedInstanceState(Bundle( 中收到的捆绑包是一个完全不同的捆绑包,您应该填充代表片段状态的字段(与前一个捆绑包中的初始参数相反(。您在重新创建的片段实例中收到相同的捆绑包,并且可以在调用 onActivityCreated(Bundle( 时从中提取状态。
前提是我还添加一个无参数构造函数
在这种情况下。没有区别。
就onSavedInstanceState
而言,这是对碎片生命周期的进一步了解。如果您曾经更新过从 setArguments
收到的参数,则需要实现一种方法来保存它们以保持状态,然后您将使用 onSavedInstanceState
和 onCreateView
提供的Bundle
,而不是或补充getArguments