0

使用以下方法初始化片段有什么区别:-

  • 静态newInstance(String a, int b)方法和 Bundle 参数。
  • 与多参数构造函数相比MyFragment(String a, int b),前提是我还添加了无参数构造函数MyFragment()

如果它与系统如何初始化片段有关,那么onSavedInstanceState(Bundle bundle)vs的目的是MyFragment.newInstance(String a, int b)什么?

4

2 回答 2

0

前提是我还添加了一个无参数构造函数

在这种情况下。没有不同。

就目前onSavedInstanceState而言,这进一步进入了 Fragment 的生命周期。如果您曾经更新过从 收到的参数setArguments,那么您需要实现一种方法来保存它们以保持状态,然后您将使用onSavedInstanceState andBundle提供的 by代替onCreateView 或补充 getArguments

于 2017-02-14T23:26:57.227 回答
0

当操作系统需要销毁并重新创建您的片段时,它会使用空构造函数创建它的新实例。

您在 newInstance() 中创建和设置的包由操作系统为您保存和恢复,并且仅包含片段的初始参数。

您在 onSavedInstanceState(Bundle) 中收到的包是一个完全不同的包,您应该用代表片段状态的字段填充它(与前一个包中的初始参数相反)。您在重新创建的片段实例中收到相同的包,并且可以在调用 onActivityCreated(Bundle) 时从中提取状态。

于 2017-02-14T23:13:54.050 回答