2011-09-09 6 views
40

Mam problem z uzyskaniem metodywywoływania podczas uruchamiania AsyncTask. Kiedy próbuję skonfigurować moją klasę rozszerzającą AsyncTask, w której onPostExecute() jest nadpisany, pojawia się następujący błąd kompilacji.Nie można przesłonić metody onPostExecute() w klasie AsyncTask lub uruchomić go w celu wyzwalania

„Metoda onPostExecute() typu AsyncTaskExampleActivity musi nadpisanie lub zaimplementować metodę supertypem”

Próbowałem pozbyć się @Override adnotacji. To pozbywa się błędu kompilacji, ale metoda nadal nie jest wykonywana. Jeśli ktokolwiek byłby tak uprzejmy, aby wskazać, co przeoczyłem, bardzo bym to docenił.

Kod:

package com.asynctaskexample; 

import android.os.AsyncTask; 

public class AsyncTaskExampleActivity extends AsyncTask<Void, Void, Void> { 

AsyncTaskExampleActivity(){ 
super(); 
    } 

@Override 
protected void onPreExecute() { 
    } 

@Override 
protected Void doInBackground(Void... params) { 
    return null; 
} 

@Override 
protected void onPostExecute() { 
    } 
} 

Odpowiedz

99

OnPostExecute() przyjmuje argument (obiekt powrocie z doInBackground()). Zmień go na protected void onPostExecute(Void v). Jeśli argument nie zostanie podany, sygnatury metody nie będą się zgadzać, a adnotacja przesłaniania zacznie narzekać, że nie ma funkcji zastępującej tę sygnaturę.

22

Spróbuj:

W klasie spróbuj kliknąć prawym przyciskiem Source -> Override/Implement methods.. i poszukać sposobu onPostExecute(). Daje ci kompletną metodę z wszystkimi typami argumentów, jeśli się pojawi.

+0

Wow bardzo fajne. Dzięki za wskazówkę. – Ben

+0

W Androidzie Studio możesz przejść do menu Kod -> Zastąp metody (Ctrl + O) –

+0

W nowej wersji, kliknij prawym przyciskiem myszy -> Wygeneruj -> Zastąp metody –

-2

Powinieneś dodać metodę super.onPostExecute(). Na przykład:

@Override 
protected void onPostExecute(Void nothing) 
{ 
    super.onPostExecute(nothing); 
} 

EDIT: Chłopaki, nie mam pojęcia, dlaczego downvoting odpowiedź. Pytający brakuje argumentu metody onPostExecute() i nie ma zaimplementowanej metody nadtypu. To jest powód, dla którego napisałem tę odpowiedź.

+3

Dlaczego powinien je dodać? Czy mógłbyś wyjaśnić powody? – FanaticD

Powiązane problemy