gpt4 book ai didi

java - 扩展 fragment 的空构造函数

转载 作者:行者123 更新时间:2023-11-29 05:15:43 34 4
gpt4 key购买 nike

根据 Android developers website , "每个 fragment 都必须有一个空的构造函数,因此它可以在恢复其 Activity 状态时被实例化"。因此,在新的示例项目中,它们具有如下 fragment 实例化:

public static class PlaceHolderFragment extends Fragment {

public PlaceHolderFragment() {}

...
}

对于非静态 fragment 类,这是必要的(鼓励吗?)?实际上,我不太明白空构造函数如何帮助恢复 Activity 状态。我有许多没有空构造函数的自定义对话框 fragment ,但它们没有问题。如果我不为扩展 fragment 提供空构造函数,可能会产生什么后果?

最佳答案

建议在 fragment 类中有一个空构造函数,因为在某些情况下,例如屏幕旋转,Android 系统将调用 fragment 的空构造函数来重新创建 fragment 。

要回答您的问题,即使您不提供空构造函数,只要您的 fragment 中没有任何参数化构造函数,您的应用程序也能正常工作。这是因为当你在类中没有提供任何构造函数时,java 编译器会自动添加一个空构造函数。

如果您在类中定义了任何参数化构造函数,编译器将不会自动添加空构造函数。在这种情况下,如果您知道有人将创建您的类的不带参数的对象,则您必须显式定义一个空构造函数。这是通用的 java 编译器行为,并非仅针对 android。

因为当类中定义了参数化构造函数时,人们忘记添加默认构造函数是一个常见的错误。所以android开发者网站坚持在fragment中创建空构造函数是为了更安全。 空构造函数是由您生成还是由您提供并不重要,只要它存在于 fragment 中即可。

关于java - 扩展 fragment 的空构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26622172/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com