为什么Fragment的这个子类没有空构造函数? (谷歌iosched)

时间:2014-08-28 15:16:21

标签: android android-fragments fragment wear-os

Fragment的文件说:

  

Fragment的所有子类都必须包含一个公共空构造函数。   框架通常会在需要时重新实例化一个片段类,   特别是在状态恢复期间,需要能够找到这个   构造函数来实例化它。如果没有空构造函数   可用时,在某些情况下会在状态期间发生运行时异常   还原

http://developer.android.com/reference/android/app/Fragment.html

但是这个类没有空构造函数。为什么这个类没有空构造函数? https://github.com/google/iosched/blob/master/Wearable/src/main/java/com/google/samples/apps/iosched/iowear/fragments/SubmitFragment.java

3 个答案:

答案 0 :(得分:1)

因为它的超类(它扩展的类)有一个公共的构造函数,所以它是所有子类的。

答案 1 :(得分:0)

因为它不能在Fragment事务中容易地由容器重新创建,所以这些托管类被包装以保留默认构造函数。例如,恢复片段的状态,这是自动执行的。

结构不禁止,您可以根据需要添加其他构造函数,例如,在单元测试期间使用它们,但确保保持公共默认构造函数可用于应用程序运行时

答案 2 :(得分:0)

显然,这段代码错了。但我对可穿戴式设备了解不多。也许SDK与Wear-device的工作方式不同。

只有当系统终止(保存)Activity并重新创建它时,才会出现非空构造函数的问题。它想创建一个Fragment的实例,但不能。