Android 片段和多个构造函数



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

  • 静态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

最新更新