DialogFragment在屏幕旋转时消失

4
尽管我看到了许多关于此问题的解决方案并尝试了它们,但由于没有一个建议的方法适用于我的情况,因此我决定再次提出这个问题。
问题: 我正在尝试在ActivityFragment内显示基于DialogFragment的自定义对话框。 由于具有不同布局,每次方向更改都会重新创建Activity。 每当这种情况发生时,DialogFragment就会消失。(我正在使用最新的支持包)
我做过的事情:
1.使用onRetainCustomNonConfigurationInstance来尝试保存对话框。 2.在对话框onCreate中使用setRetainInstance(true)。 3.在对话框中使用静态newInstance()方法。 4.重写对话框onDestroy以删除内部对话框上的destroy侦听器等。
还有一些其他记录的解决方案。 没有什么有效, 我试过了很多这些解决方案的变化, 原因是我的自定义对话框包含了许多处于不同状态的UI元素,我真的需要让它工作。
如果有人能够提供一些代码解决方案,那将不胜感激。
谢谢, Totem

也许您可以提供一些代码,然后我们可以帮助您调试它。 - lyricsboy
我想有意地在屏幕方向更改时关闭我的对话框... 你能提供一些代码来展示你是如何做到的吗? - Rich
1个回答

3
问题在于FragmentManager也会通过父级的onSaveInstanceState()方法进行保留,而我在ActivityFragment中重写它时没有调用该方法,这是我的疏忽。谢谢,Totem。

6
我遇到了同样的问题,但我不明白你是怎么解决它的。你是忘记调用哪个方法了,在哪里调用的?是在父活动的 onSaveInstanceState 方法中吗? - span
1
@span - 我相信他是说他在子类中忘记调用super.onSaveInstanceState()。父类在onSaveInstanceState中重新创建片段,但如果他不调用super,则无法重新创建。 - Grimmace

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接