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