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