2011-07-13 105 views

回答

2

您可以重寫onPostExecute或onProgressUpdate以在UI線程上顯示消息。

要使用onProgressDisplay聲明第二類型爲String當你擴展的AsyncTask:

private class YourTask extends AsyncTask<ParamType, String, ReturnType> { 

,並覆蓋onProgressUpdate:

protected void onProgressUpdate(String... progress) { 
    String errMsg = progress[0]; 
    Toast.makeText(getApplicationContext(), errMsg, Toast.LENGTH_SHORT).show(); 
} 

,那麼你可以在你的例外出現所謂的「進步」功能doInBackground:

protected ReturnType doInBackground(ParamType... params) { 
    try { 
     // do stuff 
    } catch (IOException e) { 
     publishProgress("My Error Msg goes here"); 
    } 
    return result; 
} 
+0

非常感謝。像我的魅力:) –

1

就像這樣:

Toast.makeText(Context context, int resId, int duration).show(); 

它需要一個Context所以只是把它傳遞到的AsyncTask。 More information

+0

您不應該在UI線程以外的其他線程中操作UI。 – thaussma

+0

嗯,我從catch(IOException e)塊中調用了runOnUiThread,但是,它並沒有告訴程序停止運行。告訴程序停止的最簡單方法是什麼? – hunterp

+0

在AsyncTask上調用cancel()並/或者只返回null。 – thaussma

0

骯髒的方法是創建一個不同的nt會導致IOException異常,例如,如果沒有Internet連接,則可以檢查IOException中的連接性,並在連接存在result ='connection_to_server_issue'時設置結果。如果沒有連接結果='no_connection'。

然後在您的postExecution上,您可以首先檢查結果是否等於這兩個字符串,如果是,則執行toastmessage,或者如果發生其中一個錯誤,則執行toastmessage。

相關問題