抛出:IllegalArgumentException?为什么? [英] IllegalArgumentException? Why?

查看:198
本文介绍了抛出:IllegalArgumentException?为什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

任何人都可以向我解释为什么这个错误occures,甚至更好我怎么处理呢?我不能复制。它是happends一旦出了1000的错误之一。

背景:用户试图登录,进度对话框显示时,一个HTTP请求的异步任务发送,是dissmissed进度对话框。错误occures,应用FC。

LoginActivity.java

  255:私人无效dismissProgress(){
 256:如果(!mProgress = NULL){
 257:mProgress.dismiss();
 258:mProgress = NULL;
 259:}
 260:}

java.lang.IllegalArgumentException:如果查看没有连接到窗口管理器
在android.view.WindowManagerImpl.findViewLocked(WindowManagerImpl.java:391)
在android.view.WindowManagerImpl.removeView(WindowManagerImpl.java:236)
在android.view.Window $ LocalWindowManager.removeView(Window.java:432)
在android.app.Dialog.dismissDialog(Dialog.java:278)
在android.app.Dialog.access $ 000(Dialog.java:71)
在android.app.Dialog $ 1.运行(Dialog.java:111)
在android.app.Dialog.dismiss(Dialog.java:268)
在se.magpern.LoginActivity.dismissProgress(LoginActivity.java:257)
在se.magpern.LoginActivity.access $ 5(LoginActivity.java:255)
在se.magpern.LoginActivity $ DoTheLogin.onPostExecute(LoginActivity.java:293)
在se.magpern.LoginActivity $ DoTheLogin.onPostExecute(LoginActivity.java:1)
在android.os.AsyncTask.finish(AsyncTask.java:417)
在android.os.AsyncTask.access $ 300(AsyncTask.java:127)
在android.os.AsyncTask $ InternalHandler.handleMessage(AsyncTask.java:429)
在android.os.Handler.dispatchMessage(Handler.java:99)
在android.os.Looper.loop(Looper.java:144)
在android.app.ActivityThread.main(ActivityThread.java:4937)
在java.lang.reflect.Method.invokeNative(本机方法)
在java.lang.reflect.Method.invoke(Method.java:521)
在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:868)
在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
在dalvik.system.NativeStart.main(本机方法)
 

解决方案

这可以,如果用户要么驳回视图(如可回退的对话)发生或者如果用户切换到不同的活动,而你的任务在跑。你应该认真考虑使用Android的活动本土对话框显示/驳回,而不是试图保持引用自己的意见。但如果你自己处理吧,你可能要检查对话框显示实际使用对话框的<一个href="http://developer.android.com/reference/android/app/Dialog.html#isShowing%28%29"><$c$c>isShowing()方法试图将其关闭之前。

Can anyone explain to me why this error occures, or even better how do I handle it? I can not reproduce it. It is one of those errors that happends once out of a 1000.

Background: The user is trying to log in, a progress dialog is showing, a http request is sent in async task, the progress dialog is dissmissed. Error occures, app FC.

LoginActivity.java

 255:   private void dismissProgress() {  
 256:     if (mProgress != null) {  
 257:         mProgress.dismiss();  
 258:         mProgress = null;  
 259:     }  
 260:   }  

java.lang.IllegalArgumentException: View not attached to window manager
at android.view.WindowManagerImpl.findViewLocked(WindowManagerImpl.java:391)
at android.view.WindowManagerImpl.removeView(WindowManagerImpl.java:236)
at android.view.Window$LocalWindowManager.removeView(Window.java:432)
at android.app.Dialog.dismissDialog(Dialog.java:278)
at android.app.Dialog.access$000(Dialog.java:71)
at android.app.Dialog$1.run(Dialog.java:111)
at android.app.Dialog.dismiss(Dialog.java:268)
at se.magpern.LoginActivity.dismissProgress(LoginActivity.java:257)
at se.magpern.LoginActivity.access$5(LoginActivity.java:255)
at se.magpern.LoginActivity$DoTheLogin.onPostExecute(LoginActivity.java:293)
at se.magpern.LoginActivity$DoTheLogin.onPostExecute(LoginActivity.java:1)
at android.os.AsyncTask.finish(AsyncTask.java:417)
at android.os.AsyncTask.access$300(AsyncTask.java:127)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:429)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:144)
at android.app.ActivityThread.main(ActivityThread.java:4937)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
at dalvik.system.NativeStart.main(Native Method)

解决方案

This can happen if the user either dismisses the view (e.g. a dialog that can be backed out of) or if the user switches to a different activity while your task is running. You should seriously think about using Android's activity-native dialog showing/dismissing instead of trying to keep a reference to the views yourself. But if you are handling it yourself, you may want to check if the dialog is actually showing using the dialog's isShowing() method before trying to dismiss it.

这篇关于抛出:IllegalArgumentException?为什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆