o aplicativo falha quando a caixa de diálogo de alerta é aberta e o telefone (emulador) altera sua orientação

caras, eu estive pesquisando e estudando sobre isso por um dia inteiro. O aplicativo falha não apenas quando uma caixa de diálogo é aberta, mas também quando um botão giratório é aberto (e tenho certeza de que haveria muitos outros cenários que não encontrei).

escolher entre onRetainNonConfigurationInstance () e onConfigurationChanged (Configuration newConfig) não vai me ajudar. (talvez eu esteja errado) - na verdade, prefiro usar o primeiro.

MAS eu quero perguntar: para uma única caixa de diálogo aberta ou botão giratório aberto eu tenho que criar tudo do zero? é assim? às vezes é inútil reinicializar uma classe grande com muitos widgets internos por um tempo que talvez o usuário altere a orientação.

plz me dê dicas e orientações. Desde já, obrigado.

Editado :::

Error code:

01-25 17:56:48.182: ERROR/WindowManager(312): Activity XXX has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@43e63058 that was originally added here
01-25 17:56:48.182: ERROR/WindowManager(312): android.view.WindowLeaked: Activity XXX has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@43e63058 that 
was originally added here
01-25 17:56:48.182: ERROR/WindowManager(312):     at android.view.ViewRoot.<init>(ViewRoot.java:247)
01-25 17:56:48.182: ERROR/WindowManager(312):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:148)
01-25 17:56:48.182: ERROR/WindowManager(312):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
01-25 17:56:48.182: ERROR/WindowManager(312):     at android.view.Window$LocalWindowManager.addView(Window.java:424)
01-25 17:56:48.182: ERROR/WindowManager(312):     at android.app.Dialog.show(Dialog.java:241)
01-25 17:56:48.182: ERROR/WindowManager(312):     at XXX.menuGroupDialog(XXX.java:946)
0    1-25 17:56:48.182: ERROR/WindowManager(312):     at XXX.onOptionsItemSelected
(GroupManagement.java:257)
01-25 17:56:48.182: ERROR/WindowManager(312):     at android.app.Activity.onMenuItemSelected(Activity.java:2195)01-25 17:56:48.182: ERROR/WindowManager(312):     at 
com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:730)
01-25 17:56:48.182: ERROR/WindowManager(312):     at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:143)
01-25 17:56:48.182: ERROR/WindowManager(312):     at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:855)
01-25 17:56:48.182: 
ERROR/WindowManager(312):     at com.android.internal.view.menu.IconMenuView.invokeItem(IconMenuView.java:532)
01-25 17:56:48.182: ERROR/WindowManager(312):     at com.android.internal.view.menu.IconMenuItemView.performClick(IconMenuItemView.java:122)
01-25 17:56:48.182: ERROR/WindowManager(312):     at android.view.View$PerformClick.run(View.java:8816)
01-25 17:56:48.182: ERROR/WindowManager(312):     at 
android.os.Handler.handleCallback(Handler.java:587)
01-25 17:56:48.182: ERROR/WindowManager(312):     at android.os.Handler.dispatchMessage(Handler.java:92)
01-25 17:56:48.182: ERROR/WindowManager(312):     at android.os.Looper.loop(Looper.java:123)
01-25 17:56:48.182: ERROR/WindowManager(312):     at 
android.app.ActivityThread.main(ActivityThread.java:4627)
01-25 17:56:48.182: ERROR/WindowManager(312):     at java.lang.reflect.Method.invokeNative(Native Method)
01-25 17:56:48.182: ERROR/WindowManager(312):     at java.lang.reflect.Method.invoke(Method.java:521)
01-25 17:56:48.182: ERROR/WindowManager(312):     at 
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
01-25 17:56:48.182: ERROR/WindowManager(312):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
01-25 17:56:48.182: ERROR/WindowManager(312):     at 
dalvik.system.NativeStart.main(Native Method)

Eu sei que isso é chamado de função de descarte (). mas como posso lidar com a mudança de orientação quando a caixa de diálogo é aberta?

questionAnswers(4)

yourAnswerToTheQuestion