2012-07-19 58 views
10

如果我有我DialogFragment声明为类我上orientation changeInstantiationException,即当实例被重建,它说没有公共构造函数,类是不公开等,其实一切都public,默认构造函数已到位。如果我只将这DialogFragment移动到一个单独的文件 - 一切都很好。我不是在寻找解决方法,我只是想了解为什么会发生这种情况。为什么DialogFragment不能成为内部类?

+0

我不完全确定,但我认为'DialogFragment's,如果在一个类中,必须是'static'。不幸的是,我没有任何引用,只是我见过的每个工作示例都使用了“静态”实现。从你昨天的帖子的要点来看,我认为这不是一个可行的解决方案,但我相信是这样。也许其他人可以在这个更多的光... – Eric 2012-07-19 18:33:20

+0

谢谢,埃里克。我只想了解幕后发生了什么,为什么会发生这种情况。 – Eugene 2012-07-19 18:38:25

+0

是的,我与ViewPager和Fragment类完全相同的问题。 – WELLCZECH 2013-03-02 21:20:23

回答

8

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

这一切似乎Fragment■找在某些情况下[1],如方向变化(我猜在初始化时,这取决于如何创建Fragment)被重新实例。这意味着它将从外部课堂以外重新实现。但是,不能从外部类的外部实例化非内部类。 [2]还有其他情况下需要从课外与Fragment进行沟通。 [3]

相关问题