2012-05-22 10 views
6

He leído hilos similares aquí, incluso en Google pero no hay solución.Android/Java: ¿onProgressUpdate() no se llama?

onProgressUpdate() simplemente no se está llamando.

Aquí está el código:

public class DoHardWork extends AsyncTask { 

    @Override 
    protected Object doInBackground(Object... params) { 


     publishProgress("Requesting XML data"); 
     this.requestData(); 

     publishProgress("Returning results"); 
     this.returnResults(); 

     return null; 
    } 



    protected void onProgressUpdate(String text) { 
     super.onProgressUpdate(text); 
     MainActivity.setLog(text); 
    } 
} 

He intentado establecer un punto de interrupción en onProgressUpdate() y nunca se llama. Es como si el código simplemente se ignorara.

Alguien tuvo un problema similar y resultó ser solo un eclipse, pero intenté reiniciarlo sin éxito.

¿Alguna idea?

Respuesta

11

Creo que te perdiste algunas cosas en tu código. Pruebe con este:

private class DoHardWork extends AsyncTask<Void, String, Long> { 
    protected Long doInBackground(Void... urls) { 
     publishProgress("Requesting XML data"); 
     this.requestData(); 

     publishProgress("Returning results"); 
     this.returnResults(); 

     return null; 
    } 

    protected void onProgressUpdate(String... progress) { 
     super.onProgressUpdate(progress); 
     MainActivity.setLog(progress[0]); 
    } 


} 
+0

Eso lo hizo! Soy un poco nuevo en Java, así que traté de mantenerlo lo más simple posible, no sabía que se necesitaran genéricos. Sin embargo, una pregunta más, ¿por qué no puedo llamar publishProgress() desde onCancelled()? Parece que debería ser posible. – qwerty

+0

Puede llamar a publishProgress() pero en el segundo valor del genérico debe colocar Void, así: DoHardWork extiende AsyncTask . Eche un vistazo a este enlace http://developer.android.com/reference/android/os/AsyncTask.html – Pablo

+2

Mejor aún, agregue @Override en su declaración de método, no tendrá que adivinar si lo hizo bien, compilador lo hará por usted. –