2012-05-22 14 views
6

Przeczytałem podobne wątki tutaj, nawet googled, ale nie ma rozwiązania.Android/Java: onProgressUpdate() nie jest wywoływana?

Funkcja onProgressUpdate() nie jest wywoływana.

Oto kod:

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); 
    } 
} 

Próbowałem ustawienie przerwania w onProgressUpdate() i nigdy nie nazywa. To tak, jakby kod był po prostu ignorowany.

Ktoś miał podobny problem i okazało się, że jest to zwykłe zaćmienie, ale próbowałem go zrestartować bez powodzenia.

Wszelkie pomysły?

Odpowiedz

11

Myślę, że przegapiłeś coś na swoim kodzie. Wypróbuj to:

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

To się udało! Jestem trochę nowy w Javie, więc starałem się, aby był tak prosty, jak to możliwe, nie wiedziałem, że generics był wymagany. Jeszcze jedno pytanie, dlaczego nie mogę nazwać publishProgress() z onCancelled()? Wygląda na to, że powinno być możliwe. – qwerty

+0

Możesz wywołać metodę pubProgress(), ale na drugiej wartości generycznej musisz umieścić Void, tak: DoHardWork rozszerza AsyncTask . Spójrz na ten link http://developer.android.com/reference/android/os/AsyncTask.html – Pablo

+2

Jeszcze lepiej, dodaj @Override do deklaracji metody, nie będziesz musiał zgadywać, czy zrobiłeś to dobrze, kompilator zrobi to za Ciebie. –

Powiązane problemy