Java 异步任务在执行过程中崩溃

Java 异步任务在执行过程中崩溃,java,android,android-asynctask,Java,Android,Android Asynctask,因此,如果我启动我的异步任务它只是在调用方法getXmlFromUrl时崩溃。我找不到解决办法,有人能帮我吗?我在试一个小时左右。。。它说有一个丢失的catch块,但是在哪里? 如果我对getXmlFromUrl进行注释,应用程序就可以正常工作。 我走到了尽头,所以任何帮助都可以:) 来源: 错误: 不要在doInBackground()方法中显示progressdialog。您应该在postExecute()方法上执行此操作问题: 01-18 12:58:39.086: E/AndroidRu

因此,如果我启动我的
异步任务
它只是在调用方法
getXmlFromUrl
时崩溃。我找不到解决办法,有人能帮我吗?我在试一个小时左右。。。它说有一个丢失的
catch
块,但是在哪里? 如果我对
getXmlFromUrl
进行注释,应用程序就可以正常工作。 我走到了尽头,所以任何帮助都可以:)

来源:

错误:

不要在doInBackground()方法中显示progressdialog。您应该在postExecute()方法上执行此操作问题:

01-18 12:58:39.086: E/AndroidRuntime(16249): Caused by: android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
因为您在
doInBackground()
中关闭了在WorkerThread中运行的AsyncTask的
ProgressDailog对话框。当您的
ProgressDailog对话框运行在ActivityMainThread上时

和Android严格禁止更新Worker或任何其他线程中的任何视图。

只需删除
p.discouse()来自
doInBackground()
并将其放入AsyncTask的
onPostExecute()

类似于:

protected Void doInBackground(Void... nothing){
 Globals.shopCon=new ShopConnection("http://" + Globals.ip + "/ws410/rest/");
 return null;                                   
}

onPostExecuted(Void nothing)
{
 p.dismiss();
}

简单地说:您不能在AsyncTask
doInBackground()
Method中查看内容。
只需移动您的呼叫
p.discouse()
onPostExecute()

onPostExecute也是需要从AsyncTask类重写的方法:

如日志所示:

CalledFromErrorThreadException:仅创建的原始线程 视图层次可以接触其视图


因为您试图在
doInBackground
中关闭
ProgressDialog
。只需将
p.dismise()
移动到
onPostExecute
中,即可找到新版本的代码。您不应该关闭
doInBackground()中的进度对话框。

请不要使用pastebin,发布代码,并在此处格式化:)但源代码大约有100行长。。。。这将是很长的张贴在这里,因为我没有看到任何扰流板,无论它是多长时间。只需将代码格式化为代码,它就会被包装在一个滚动条中。如果你的链接死了,这个问题将对其他人不利,如果他们正在寻找类似问题的帮助!天啊!!我错过了上网许可-谢谢!你的观点也是正确的:“我是新手,我还在学习:”Stuttt在十一月下旬对Android进行了编码,以前从未使用过java,只是C++、PHP、AutoIT和一种带有大微笑的Objy-C小的外观,因为Obj.c是垃圾:D
protected Void doInBackground(Void... nothing){
 Globals.shopCon=new ShopConnection("http://" + Globals.ip + "/ws410/rest/");
 return null;                                   
}

onPostExecuted(Void nothing)
{
 p.dismiss();
}
onPostExecuted(Void nothing)
{
 p.dismiss();
}