2017-09-23 142 views
0

我在alertdialog中有微調。如果alertdialog顯示並且屏幕方向已更改 - 一切正常。 Alertdialog仍然顯示。但是如果微調控制器打開並且屏幕方向改變了,那麼應用程序會崩潰,View不會附加到窗口管理器。我嘗試了onDestroy中的alertdialog.dismiss(),但未成功。有任何想法嗎?Android:alertdialog中的微調器崩潰

LayoutInflater li = LayoutInflater.from(ScrollingActivity.this); 
View promptsView = li.inflate(R.layout.popup_layout, null); 
AlertDialog.Builder alertDialogBuilder = new 
AlertDialog.Builder(ScrollingActivity.this, R.style.MyAlertDialogStyle); 

alertDialogBuilder.setView(promptsView); 

alertDialogBuilder.setTitle(R.string.def_recipe_lang); 
alertDialogBuilder.setIcon(R.drawable.ic_language_orange_24px); 
// create alert dialog 
alertDialog = alertDialogBuilder.create(); 
alertDialog.show(); 
alertDialog.setCanceledOnTouchOutside(false); 

錯誤: 09-23 15:06:27.745 15519-15519/com.example.user.coordinatortest E/AndroidRuntime:致命異常:主 java.lang.IllegalArgumentException異常:查看不附到窗口管理器 at android.view.WindowManagerGlobal.findViewLocked(WindowManagerGlobal.java:385) at android.view.WindowManagerGlobal.removeView(WindowManagerGlobal.java:287) at android.view.WindowManagerImpl.removeView(WindowManagerImpl.java:79 ) at android.app.Dialog.dismissDialog(Dialog.java:323) at android.app.Dialog.dismiss(Dialog.java:306) at android.widget.Spinner $ DialogPopup.dismiss(Spinner.java:840) 在android.widget.Spinner.onDetachedFromWindow(Spinner.java:414) at android.support.v7.widget.AppCompatSpinner.onDetachedFromWindow(AppCompatSpinner.java:399) at android.view.View.dispatchDetachedFromWindow(View.java:12024 ) 在android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2612) 在android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2610) 在android.view.ViewGrou在android.view.ViewGroup上的android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2610) 上的p.dispatchDetachedFromWindow(ViewGroup.java:2610) (android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2610) )。 dispatchDetachedFromWindow(ViewGroup.java:2610) 在android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2610) 在android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2610) 在android.view.ViewRootImpl.dispatchDetachedFromWindow( ViewRootImpl.java:2950) at android.view.ViewRootImpl.doDie(ViewRootImpl.java:4535) at android.view.V (android.app.java:194) at android.app。 ActivityThread.main(ActivityThread.java:5431) 在java.lang.reflect.Method.invokeNative(本機方法) 在java.lang.reflect.Method.invoke(Method.java:525) 在com.android.internal .os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:833) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600) at dalvik.system.NativeStart.main(Native Method)

+1

您是否嘗試通過代碼進行調試或查看logcat? –

+1

請將您的代碼至少發送到警報框 –

回答

0

「我在onDestroy中試過alertdialog.dismiss()」,----這是對的,但是你必須在Onpause()而不是Ondestroy()中做。

Ondestroy將在屏幕被破壞時執行,而不是方向改變。

試試這個,如果你有錯誤,發佈你的代碼和Android監視器錯誤的適當答案。

+0

onPause也無濟於事。爲的LiveCycle方向的變化是: 的onSaveInstanceState在onPause 的onStop 的onDestroy 的onCreate 在onStart onRestoreInstanceState 的onResume。 –