![](/img/trans.png)
[英]Change the message of a progressDialog in AsyncTask without altering doInBackgroud()
[英]Change the message of a ProgressDialog in AsyncTask
我在AsyncTask中運行一個ProgressDialog。 我試圖達到,只要緩沖區的長度變大,然后說10000,來自ProgressDialog的消息就會改變。
有人可以幫我嗎,這可能嗎? 先感謝您。
@Override
protected void onProgressUpdate(Integer... progUpdate) {
if (progUpdate[0] >= 10000){
progress.setMessage("Informatie wordt opgehaald....");
}
}
緩沖區是在AsyncTask doInBackGround中創建的:
try {
HttpResponse response = httpClient.execute(request);
System.out.println("Response: " + response.getEntity().getContentLength());
/******* READ CONTENT IN BUFFER *******/
InputStream inputStreamActivity = response.getEntity().getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStreamActivity));
StringBuilder sb = new StringBuilder();
String line = null;
int count = sb.length();
while ((line = reader.readLine()) != null) {
sb.append(line);
publishProgress(sb.length());
}
/******* CLOSE CONNECTION AND STREAM *******/
System.out.println(sb);
inputStreamActivity.close();
kpn = sb.toString();
httpClient.getConnectionManager().shutdown();
}
要更改對話框的消息,您將要使用AsyncTask的onProgressUpdate方法,並將AsyncTask的第二個參數定義為Integer。 onProgressUpdate將如下所示:
protected void onProgressUpdate(Integer... progUpdate) {
if (progUpdate[0] >= 10000){ // change the 10000 to whatever
progress.setMessage("The new message");
}
}
為此,您需要在AsyncTask的doInBackground方法中更新這些行:
while ((line = reader.readLine()) != null) {
sb.append(line);
publishProgress(sb.length());
}
並擺脫該Runnable。 不用了 在此處查看AsyncTask的官方android文檔: http : //developer.android.com/reference/android/os/AsyncTask.html在該頁面上有一個很好的例子。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.