Невозможно переопределить метод onPostExecute() в классе AsyncTask или заставить его запускать
У меня возникла проблема с вызовом метода onPostExecute()
при запуске AsyncTask
. Когда я пытаюсь настроить расширение класса AsyncTask
, в котором переопределяется onPostExecute()
, я получаю следующую ошибку сборки.
'Метод onPostExecute() типа AsyncTaskExampleActivity должен переопределить или реализовать метод супертипа '
Я попытался избавиться от аннотации @Override
. Это избавляет от ошибки построения, но метод все еще не выполняется. Если бы кто-нибудь был так добр, чтобы указать, что я упускаю из виду, я бы очень оценил это.
код:
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() {
}
}
Ответы
Ответ 1
OnPostExecute()
принимает аргумент (объект, который вы возвращаете из doInBackground()
). Измените его на protected void onPostExecute(Void v)
. Если аргумент метода не указан, сигнатуры метода не совпадают, и аннотирование переопределения начинает жаловаться на отсутствие функции для переопределения этой сигнатуры.
Ответ 2
Попробуйте:
В классе попробуйте щелкнуть правой кнопкой мыши Source -> Override/Implement methods..
и искать метод onPostExecute()
. Он даст вам полный метод со всеми типами аргументов, если он получит.
Ответ 3
Вы должны добавить метод super.onPostExecute(). Например:
@Override
protected void onPostExecute(Void nothing)
{
super.onPostExecute(nothing);
}