-1

因此,如果我启动AsyncTask它,它只会在调用方法时崩溃getXmlFromUrl。我没有找到解决方案,有人可以帮助我吗?我正在尝试一个小时或其他什么......它说有一个丢失的catch块,但是在哪里?如果我评论该getXmlFromUrl应用程序就可以正常工作。我走到了尽头,所以任何帮助都会很好:)

资料来源: http: //pastebin.com/347ayn6W

错误: http: //pastebin.com/AA3W7e4F

4

5 回答 5

3

简单地说:你不能在 AsyncTaskdoInBackground()方法中查看东西。
只需将您的调用 p.dismiss();移至onPostExecute()
onPostExecute 也是您需要从 AsyncTask-Class 覆盖的方法:

onPostExecuted(Void nothing)
{
 p.dismiss();
}
于 2013-01-18T12:32:03.753 回答
1
p.dismiss();

不要在 doInBackground() 方法中关闭您的进度对话框。你应该这样做 onPostExecute() 方法

于 2013-01-18T12:31:38.990 回答
1

问题:

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.

因为您正在解雇ProgressDailog dialogWorkerThreaddoInBackground()中运行的 AsyncTask 。当您在ActivityMainThread上运行时..ProgressDailog dialog

Android 严格不允许更新 Worker 或任何其他线程中的任何视图。

只需 p.dismiss();从AsyncTask中删除doInBackground()并放入onPostExecute()

就像是:

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

onPostExecuted(Void nothing)
{
 p.dismiss();
}
于 2013-01-18T12:31:51.363 回答
1

如日志:

CalledFromWrongThreadException:只有创建视图层次结构的原始线程才能接触其视图

因为您正试图 ProgressDialogdoInBackground. 搬进p.dismiss()onPostExecute

于 2013-01-18T12:32:06.290 回答
0

在这里找到新版本的代码。你不应该关闭里面的进度对话框doInBackground()

于 2013-01-18T12:32:51.660 回答