在我的应用程序中打开对话框并且设备旋转时,应用程序崩溃。
我以为自己已经在做所有事情来处理轮换了
在我的所有活动中,我在清单
中启用了此功能android:configChanges="keyboardHidden|orientation"
android:screenOrientation="fullSensor"
对于有问题的对话框,我有这段代码
if(!WebViewActivity.this.isFinishing() && dialog != null && dialog.isShowing()){
dialog.dismiss();
}
然而,如果在设备旋转时对话框打开,我仍会收到此崩溃消息
java.lang.IllegalArgumentException: View not attached to window manager
at android.view.WindowManagerGlobal.findViewLocked(WindowManagerGlobal.java:383)
at android.view.WindowManagerGlobal.removeView(WindowManagerGlobal.java:285)
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 bundle.android.views.WebViewActivity$1.onPageFinished(WebViewActivity.java:133)
at android.webkit.CallbackProxy.handleMessage(CallbackProxy.java:323)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5039)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
at dalvik.system.NativeStart.main(Native Method)
或此错误消息
android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.BinderProxy@42173a50 is not valid; is your activity running?
此示例是关于名为WebViewActivity
的活动,但我还有许多其他具有相同问题的活动
我觉得不需要使用onConfigurationChanged
生命周期方法,但欢迎任何解决方案!
答案 0 :(得分:1)
答案是使用
android:configChanges="keyboardHidden|orientation"
android:screenOrientation="fullSensor"
像我正在使用的那样,以及用于android api level 13 + 的额外参数screenSize
android:configChanges="keyboardHidden|orientation|screenSize"
android:screenOrientation="fullSensor"
必须对清单中的每个活动进行此操作,其中对话框可能是一个问题,以及放入
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
}