为什么 Fragment 现在有非空构造函数?
Why Fragment have non-empty constructor now?
很长一段时间以来,我们都被告知不要通过 Fragment 构造函数传递变量。
但似乎 Fragment 本身现在有其他 Fragment 构造函数来传递如下数据。不从 Fragment 构造函数传递数据仍然是我们的最佳实践吗?或者有什么技巧可以摆脱它但仅限于框架级别?
public Fragment() {
initLifecycle();
}
@ContentView
public Fragment(@LayoutRes int contentLayoutId) {
this();
mContentLayoutId = contentLayoutId;
}
根据 Android 文档找到答案。
You must set a custom FragmentFactory if you want to use a non-default constructor to ensure that your constructor is called when the fragment is re-instantiated.
https://developer.android.com/reference/androidx/fragment/app/Fragment#Fragment(int)
所以我们有了这个新的构造函数就可以使用了,但是我们还是要提供FragmentFactory来处理fragment被重新创建的情况。
很长一段时间以来,我们都被告知不要通过 Fragment 构造函数传递变量。 但似乎 Fragment 本身现在有其他 Fragment 构造函数来传递如下数据。不从 Fragment 构造函数传递数据仍然是我们的最佳实践吗?或者有什么技巧可以摆脱它但仅限于框架级别?
public Fragment() {
initLifecycle();
}
@ContentView
public Fragment(@LayoutRes int contentLayoutId) {
this();
mContentLayoutId = contentLayoutId;
}
根据 Android 文档找到答案。
You must set a custom FragmentFactory if you want to use a non-default constructor to ensure that your constructor is called when the fragment is re-instantiated. https://developer.android.com/reference/androidx/fragment/app/Fragment#Fragment(int)
所以我们有了这个新的构造函数就可以使用了,但是我们还是要提供FragmentFactory来处理fragment被重新创建的情况。