-1

したがって、起動するAsyncTaskと、メソッドの呼び出し中にクラッシュしgetXmlFromUrlます。解決策が見つかりません。誰か助けてもらえますか? 私は 1 時間ほど試行錯誤しています... 不足している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()メソッドでprogressdialogを破棄しないでください。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 dialogこれは、WorkerThreadでdoInBackground()実行されるAsyncTaskを閉じているためです。ActivityMainThreadProgressDailog dialogで実行している間..

また、Androidは、Workerまたはその他のスレッドのビューを更新することを固く許可されていません。

AsyncTaskから削除 p.dismiss();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: ビュー階層を作成した元のスレッドのみがそのビューにアクセスできます

で却下しようとしているから ProgressDialogですdoInBackgroundp.dismiss()中に入るだけonPostExecute

于 2013-01-18T12:32:06.290 に答える
0

コードの新しいバージョンは、こちら から入手できます。内部の進行状況ダイアログを閉じるべきではありませんdoInBackground()

于 2013-01-18T12:32:51.660 に答える