旋转设备时加载对话框

Jit*_*hin 6 android

我有一个activity在其中有一个async task会做一些下载的东西.在下载时它会显示al oading dialog.
我的问题是,当我这样做时,它对我来说很好one orentiaon.但是当我rotate在下载时,它显示window leaked并将 dialog.cancel 在我的帖子中执行崩溃.
从我对它的研究中我理解它是因为change in the context设备何时出现rotated.
也就是说,当devicerotatedactivityrecreated所以contextchanged.
但我已经创建了与旧的对话框wasn't the current context.因此,当我取消它时显示错误
这是什么解决方案,任何想法frnds.
我使用honeycomb,我试过,fragment但没有得到一个很好的样本.我现在主要尝试这个,
如果有人可以给我一些链接,那将是伟大的

Cri*_*ian 3

首先:使用showDialog方法打开你的对话框(官方文档中有很多例子)。如果这样做,活动将在销毁时关闭对话框,并在重新创建活动后重新显示它。

另外...如果对话框显示进度条(而不是轮子),您将需要在方向更改后更新对话框的进度。为此,我建议使用onRetainNonConfigurationInstance返回对话框和/或活动本身的当前状态。然后,您可以使用它getLastNonConfigurationInstance来恢复该状态。如果您想查看示例,请谷歌一下这两种方法。

另一件需要记住的事情是:如果您要更新对话框和/或任何其他 UI 元素的状态AsyncTask,您必须注意,重新创建活动后,AsyncTask可能会指向错误的 UI 引用。为了处理这个问题,您可以创建一个代理类(代理设计模式)来将AsyncTask进度通知与当前 UI 元素分离。