我看了一些關於類似問題的其他問題,我發現我需要使用onProgressUpdate
方法來更改ProgressDialog
的消息。在使用AsyncTask時更改對話框消息?
例如,我有這樣的代碼在運行AsyncTask
的doInBackGround
(這只是一個非常小的樣本):
byte[] data = getBytesFromFile(image);
String lineEnd = "\r\n";
String twoHyphens = "--";
String boundary = "*****";
pictures.dia.setProgress(30);
pictures.dia.setMessage("Data beginning upload sequence...");
URL connectURL = new URL(this.base_url);
HttpURLConnection conn = (HttpURLConnection) connectURL.openConnection();
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setUseCaches(false);
conn.setRequestMethod("POST");
conn.setRequestProperty("Connection", "Keep-Alive");
conn.setRequestProperty("Content-Type", "multipart/form-data, boundary=" + boundary);
DataOutputStream dos = new DataOutputStream(conn.getOutputStream());
pictures.dia.setProgress(40);
pictures.dia.setMessage("Output Stream prepared...");
當我最初這樣跑,我得到一個破窗戶錯誤說我不能在AsyncTask
之外更改dia
的消息。
所以我的問題是,當dia
的進度達到一定數量時,如何使用onProgressUpdate
設置消息dia
? (即當dia
的進度= 30時,說出「數據開始上傳順序...」)
onProgressUpdate
必須明顯總是檢查dia
的進度(就像聽衆,我想)[如果它不已經這樣做了,我該如何做到這一點?]
好的,我明白這是如何工作的。我現在有一個問題:當我把'publishProgress(新的TaskProgress(10,「Beginning sequence ...」));''在一些'runnable'的代碼中出現錯誤。我的runnable在'doInBackground'方法中調用,但實際上並不在那個方法中。另外,runnable稍後會從另一個類中調用另一個方法,我不能使用'publishProgress'。任何方式在這個? – Mxyk
注意:如果我嘗試'Task.publishProgress(新的TaskProgress(10,「我的消息在這裏...」));',它表示publishProgress從AsyncTask不可見。不知道這是否有幫助。 – Mxyk
您必須在doInBackground方法內調用publishProgress。 – Brigham