gpt4 book ai didi

android - 旋转设备时加载对话框

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:18:39 25 4
gpt4 key购买 nike

我有一个 activity,其中有一个 async task 会执行一些下载操作。下载时会显示一个加载对话框
我的问题是,当我只用 one orentiaon 时,它对我来说效果很好。但是当我在下载时旋转时,它显示window leaked并且会在dialog.cancel 在我的帖子中执行。
从我对它的研究中,我更多地理解了它,因为当设备旋转上下文发生变化
也就是说,当 device旋转时,activity 将被重新创建,所以 context更改
但我用旧对话框创建了对话框,不是当前上下文。所以当我取消它时它显示错误
对此有什么解决方案,任何想法 frnds。
我使用 honeycomb,我尝试过使用 fragment 但没有得到一个很好的示例。我现在主要尝试那个,
如果有人能给我一些链接很棒

最佳答案

首先:使用showDialog 方法(there are a lot of examples in the official documentation)打开对话框。如果您这样做, Activity 将负责在销毁时关闭对话框,并在重新创建 Activity 后重新显示它。

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

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

关于android - 旋转设备时加载对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5197258/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com