Изменить сообщение ProgressDialog в AsyncTask - PullRequest
0 голосов
/ 29 октября 2011

У меня ProgressDialog работает в AsyncTask.Я пытаюсь добиться того, чтобы как только длина буфера была больше, чем, скажем, 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 Ответ

5 голосов
/ 29 октября 2011

Чтобы изменить сообщение вашего диалога, вам нужно использовать метод onProgressUpdate AsyncTask и определить второй параметр AsyncTask как Integer. OnProgressUpdate будет выглядеть примерно так:

protected void onProgressUpdate(Integer... progUpdate) {
     if (progUpdate[0] >= 10000){  // change the 10000 to whatever
        progress.setMessage("The new message");
    }
 }

Чтобы вызвать это, вам нужно обновить эти строки в методе doInBackground вашей AsyncTask:

   while ((line = reader.readLine()) != null) {
        sb.append(line);
        publishProgress(sb.length());
    }

И избавься от этого Runnable. Тебе это не нужно. Посмотрите официальную документацию по Android для AsyncTask здесь: http://developer.android.com/reference/android/os/AsyncTask.html На этой странице есть отличный пример для вас.

...