【发布时间】:2010-10-27 20:20:08
【问题描述】:
我正在使用showDialog() 和dismissDialog() 在我的应用程序中显示进度对话框。从创建对话框并在其上调用 show() 移动到使用它以在更改方向时保存状态。
但是当我从纵向->横向->纵向更改方向时,dismissDialog() 不再关闭对话框。对话框一直停留在那里,我需要按返回按钮才能让它消失。
有什么理由会这样吗?
编辑
为了克服这个问题,我尝试在onDestroy() 中添加removeDialog(),这样对话框就不会创建/显示两次,并且在方向更改之前,对话框会被删除。尝试添加日志语句,看看会发生什么
05-21 12:35:14.064: DEBUG/MyClass(193): *************callingShowDialog
05-21 12:35:14.064: DEBUG/MyClass(193): *************onCreareDialog
05-21 12:35:15.385: DEBUG/MyClass(193): *************onSaveInstanceState
05-21 12:35:15.415: DEBUG/MyClass(193): *************onDestroy
05-21 12:35:15.585: DEBUG/MyClass(193): *************callingShowDialog
05-21 12:35:15.585: DEBUG/MyClass(193): *************onCreareDialog
05-21 12:35:15.715: DEBUG/MyClass(193): *************onCreareDialog
05-21 12:35:17.214: DEBUG/MyClass(193): *************onSaveInstanceState
05-21 12:35:17.214: DEBUG/MyClass(193): *************onDestroy
05-21 12:35:17.275: ERROR/WindowManager(193): android.view.WindowLeaked: Activity com.android.MyClass has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@43362088 that was originally added here
05-21 12:35:17.395: DEBUG/MyClass(193): *************callingShowDialog
05-21 12:35:17.395: DEBUG/MyClass(193): *************onCreareDialog
05-21 12:35:17.475: DEBUG/MyClass(193): *************onCreareDialog
如果我们在这里看到,最初显示活动时,onCreateDialog 被调用一次,在改变方向时,onSaveInstanceState 和 onDestroy 被调用。
但在那之后,onCreateDialog 被调用了两次(一次是通过调用 showDialog 我做的,但为什么是第二次?)并且每次我改变方向时都会发生这种情况。
知道为什么会这样吗?
再次感谢
【问题讨论】:
-
有人可以帮我解决这个问题吗?我看过很多关于这个问题的帖子和博客,但似乎没有一个有效的解决方案。
标签: android