因此,如果我启动AsyncTask
它,它只会在调用方法时崩溃getXmlFromUrl
。我没有找到解决方案,有人可以帮助我吗?我正在尝试一个小时或其他什么......它说有一个丢失的catch
块,但是在哪里?如果我评论该getXmlFromUrl
应用程序就可以正常工作。我走到了尽头,所以任何帮助都会很好:)
资料来源: http: //pastebin.com/347ayn6W
错误: http: //pastebin.com/AA3W7e4F
因此,如果我启动AsyncTask
它,它只会在调用方法时崩溃getXmlFromUrl
。我没有找到解决方案,有人可以帮助我吗?我正在尝试一个小时或其他什么......它说有一个丢失的catch
块,但是在哪里?如果我评论该getXmlFromUrl
应用程序就可以正常工作。我走到了尽头,所以任何帮助都会很好:)
资料来源: http: //pastebin.com/347ayn6W
错误: http: //pastebin.com/AA3W7e4F
简单地说:你不能在 AsyncTaskdoInBackground()
方法中查看东西。
只需将您的调用 p.dismiss();
移至onPostExecute()
onPostExecute 也是您需要从 AsyncTask-Class 覆盖的方法:
onPostExecuted(Void nothing)
{
p.dismiss();
}
p.dismiss();
不要在 doInBackground() 方法中关闭您的进度对话框。你应该这样做 onPostExecute() 方法
问题:
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 dialog
在WorkerThreaddoInBackground()
中运行的 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();
}
如日志:
CalledFromWrongThreadException:只有创建视图层次结构的原始线程才能接触其视图
因为您正试图 ProgressDialog
在doInBackground
. 搬进p.dismiss()
去onPostExecute
在这里找到新版本的代码。你不应该关闭里面的进度对话框doInBackground()