簡體   English   中英

在AsyncTask中更改ProgressDialog的消息

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM