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

如果我有我的DialogFragment声明为内部类我得到一个InstantiationException orientation change ,即当实例被重新创build,说没有公共构造函数,类是不公开的,事实上一切都是public ,默认的构造函数到位。 如果我只是将这个DialogFragment移动到一个单独的文件 – 一切都很好。 我不是在寻找解决方法,我只是想了解为什么会发生这种情况。

Solutions Collecting From Web of "为什么DialogFragment不能成为内部类?"

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

似乎所有Fragment都必须在某些情况下重新实例化[1] ,例如方向改变(根据创buildFragment方式,我会猜测初始化)。 这意味着它将从外部阶层以外的地方重新开始。 但是,非static内部类不能从外部类的外部实例化。 [2]还有其他一些需要从课外与外界沟通的情况。 [3]