2012-07-19 17 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]