Android - 避免在设备轮换后关闭Dialogs的最佳方法

Jor*_*Gil 5 android dialog rotation android-activity

经过对这个论坛的长时间搜索,我找到了很多答案,人们建议使用解决方案来避免轮换后对话被解雇,就像:

android:configChanges="keyboardHidden|orientation"
Run Code Online (Sandbox Code Playgroud)

或者覆盖以下方法,这似乎是最推荐的方法:

protected Dialog onCreateDialog(int id)
Run Code Online (Sandbox Code Playgroud)

但是,在查看Android参考文档后,我注意到这些Dialog方法已被弃用.

所以,显而易见的问题是:

今天,在设备轮换后避免Dialogs解散的最佳方法是什么?

提前致谢.

Vla*_*nov 6

您现在应该使用新Fragments API中的DialogFragment.要在低于3.0的平台上使用它,请使用兼容包.

  • 与一些示例代码相同的答案:http://stackoverflow.com/a/15729764/842697 (2认同)

Bud*_*ius 5

我要回答的是仅基于Dialogs(不是对话片段,这是一个完全不同的游戏).

对话是活动的一部分,因此,它们在轮换期间被销毁.您以前对对话框的引用现在将指向一个对话框,它不再出现在屏幕上,并可能导致您出现问题.

不幸的是,没有简单的解决方案.随着android:configChanges="keyboardHidden|orientation"你将为自己创造一系列其他问题.

要做的是保存对话框的任何配置,关闭它,并且每当重新创建活动时,重新创建对话框.