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

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

  • 在黑暗的背景的黑暗的文本在与Theme.Sherlock.Light的AlertDialog
  • 未调用Android DialogFragment onViewCreated
  • 为什么Android O的失败“不属于这个FragmentManager!”
  • 在AlertDialog的黑暗的背景的黑暗的文本与Theme.Sherlock.Light
  • DialogFragment中的ViewPager - IllegalStateException:Fragment没有视图
  • 使用appCompat 23+进行自定义材质对话框的正确方法
  • closuresDialogFragment时的布局拉伸
  • 当显示对话框片段时,状态栏重叠,仅在Android4.4中
  • 这似乎是基于如何创build和重新创buildFragments Java的限制。

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