我使用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引起的,但为什么还会有第二次?)并且每次我改变方向时都会发生这种情况。
有任何想法为什么会发生这种情况吗?
再次感谢