Я использую showDialog()
и dismissDialog()
, чтобы показать диалоги прогресса в моем приложении. Перешел от создания диалога и вызова show()
к нему, чтобы использовать его для сохранения состояния при изменении ориентации.
Но когда я изменяю ориентацию с портрета-> пейзаж-> портрет, dismissDialog()
больше не закрывает диалоговое окно. Диалог остается там все время, и мне нужно нажать кнопку «Назад», чтобы он исчез.
Есть причина, по которой он так себя поведет?
Редактировать
Чтобы преодолеть эту проблему, я попытался добавить removeDialog()
в onDestroy()
, чтобы диалоговое окно не создавалось / не отображалось дважды, а перед изменением ориентации диалоговое окно удаляется. Попробовал добавить записи в журнал и посмотреть, что получится
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, который я делаю, но почему во второй раз?), И это происходит каждый раз, когда я меняю ориентацию и далее.
Есть идеи, почему это происходит?
Еще раз спасибо