java - Android:alertdialog中的微调器崩溃

标签 java android spinner android-spinner android-alertdialog

我在Alertdialog中有旋转器。如果显示alertdialog并且屏幕方向已更改-一切正常。 Alertdialog仍显示。但是,如果微调器处于打开状态,并且屏幕方向发生了变化,则应用程序将崩溃,并且视图未附加到窗口管理器。我在onDestroy中尝试了alertdialog.dismiss(),但未成功。有任何想法吗?

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:FATAL EXCEPTION:main
                                                                                  java.lang.IllegalArgumentException:视图未附加到窗口管理器
                                                                                      在android.view.WindowManagerGlobal.findViewLocked(WindowManagerGlobal.java:385)
                                                                                      在android.view.WindowManagerGlobal.removeView(WindowManagerGlobal.java:287)
                                                                                      在android.view.WindowManagerImpl.removeView(WindowManagerImpl.java:79)
                                                                                      在android.app.Dialog.dismissDialog(Dialog.java:323)
                                                                                      在android.app.Dialog.dismiss(Dialog.java:306)
                                                                                      在android.widget.Spinner $ DialogPopup.dismiss(Spinner.java:840)
                                                                                      在android.widget.Spinner.onDetachedFromWindow(Spinner.java:414)
                                                                                      在android.support.v7.widget.AppCompatSpinner.onDetachedFromWindow(AppCompatSpinner.java:399)
                                                                                      在android.view.View.dispatchDetachedFromWindow(View.java:12024)
                                                                                      在android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2612)
                                                                                      在android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2610)
                                                                                      在android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2610)
                                                                                      在android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2610)
                                                                                      在android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2610)
                                                                                      在android.view.ViewGroup.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)
                                                                                      在android.view.ViewRootImpl.doDie(ViewRootImpl.java:4535)
                                                                                      在android.view.ViewRootImpl $ ViewRootHandler.handleMessage(ViewRootImpl.java:3318)
                                                                                      在android.os.Handler.dispatchMessage(Handler.java:107)
                                                                                      在android.os.Looper.loop(Looper.java:194)
                                                                                      在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)
                                                                                      在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
                                                                                      在dalvik.system.NativeStart.main(本机方法)

最佳答案

“我在onDestroy中尝试过alertdialog.dismiss()”,----是正确的,但是您必须在Onpause()中而不是在Ondestroy()中进行。

毁灭将在屏幕被破坏时执行,而不是在方向改变时执行。

尝试此操作,如果遇到错误,请发布代码和android Monitor错误以获取适当的答案。

关于java - Android:alertdialog中的微调器崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46378667/

相关文章:

java - Byte Buddy 示例中的“getClass()”

java - 链接两个相同项目的源

android - 嵌套子项中的 Firebase orderbykey

Android Spinner OnLongClickListener 或 OnItemLongClickListener

java - 如何填充在android中单击按钮时动态生成的微调器

java - 如何向期望双倍的设置者提供 Integer ?

java - 使用 Java 捕获屏幕区域并识别在那里找到的文本

java - 在 JFrame 和 WordWrap 上的 x 按钮上添加方法

android - 在android问题中将android .apk下载为.zip

android - 微调标签大小