为什么DialogFragment不能成为内部类?

时间:2012-07-19 18:25:52

标签: android android-dialogfragment

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

1 个答案:

答案 0 :(得分:8)

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

似乎所有Fragment都必须在某些情况下重新实例化 [1] ,例如方向更改(我会在初始化时猜测,具体取决于{ {1}}已创建)。这意味着它将从外部类外部重新实例化。但是,非Fragment内部类不能从外部类外部实例化。 [2] 还有其他情况需要static与班级外的人沟通。 [3]