【发布时间】:2010-09-11 02:26:04
【问题描述】:
旋转屏幕后如何恢复对话框等?例如,弹出一个 alertDialog 告诉用户一些信息。然后用户将屏幕旋转到另一个方向。如何恢复alertDialog?任何人都可以指导我这样做吗?谢谢!
稍后添加:
我查看了android源代码并找到了这些东西:
对话框存储在mManagedDialogs,相关信息为:
mManagedDialogs = new SparseArray<ManagedDialog>();
onSaveInstanceState相关:
final void performSaveInstanceState(Bundle outState) {
onSaveInstanceState(outState);
saveManagedDialogs(outState);
}
在saveManagedDialogs中,与mManagedDialogs有关。
onRestoreInstanceState相关:
final void performRestoreInstanceState(Bundle savedInstanceState) {
onRestoreInstanceState(savedInstanceState);
restoreManagedDialogs(savedInstanceState);
}
在restoreManagedDialogs中,与mManagedDialogs有关。
如您所见,对于高级功能,您必须自己完成保存和恢复工作。当您拥有大量自定义对话框时,这可能是一场噩梦。我没有尝试过复杂的对话框(例如输入了 EdiText、listView)。这样,我想警告用户:在对话框中输入信息时切勿旋转屏幕......或者,在显示对话框时动态锁定旋转。
感谢所有回答我的人。希望我的信息也能帮到你。
【问题讨论】:
-
现在如何解决这个问题:stackoverflow.com/a/15729764/842697
标签: android dialog rotation restore