10

如果我将我的DialogFragment声明为内部类,我得到一个InstantiationExceptionon orientation change,即重新创建实例时,它表示没有公共构造函数,类不是公共的等。事实上,一切都是public,默认构造函数就位。如果我只是将它DialogFragment移到一个单独的文件中 - 一切都会好起来的。我不是在寻找解决方法,我只是想了解为什么会这样。

4

1 回答 1

9

这似乎是 Java 中基于如何Fragments创建和重新创建的限制。

似乎所有Fragments 在某些情况下都必须重新实例化[1],例如方向变化(我会在初始化时猜测,这取决于 s 的Fragment创建方式)。这意味着它将从您的外部类外部重新实例化。static但是,不能从外部类外部实例化非内部类。[2]还有其他情况Fragment需要从课堂外与 a 进行沟通。[3]

于 2012-07-19T18:59:46.433 回答