在AsyncTask中更改ProgressDialog的消息

时间:2011-10-29 11:07:02

标签: android android-asynctask progressdialog

我在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();
    }

1 个答案:

答案 0 :(得分:5)

要更改对话框的消息,您需要使用AsyncTask的onProgressUpdate方法,并将AsyncTask的第二个参数定义为整数。 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在这个页面上有一个很好的例子。