无法覆盖AsyncTask类中的onPostExecute()方法或让它触发

时间:2011-09-09 01:26:48

标签: java android methods override android-asynctask

运行onPostExecute()时,我无法调用AsyncTask方法。当我尝试设置我的类AsyncTask,其中onPostExecute()被覆盖时,我得到以下构建错误。

  

'AsyncTaskExampleActivity类型的onPostExecute()方法必须   覆盖或实现超类型方法'

我尝试删除@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() {
    }
}

4 个答案:

答案 0 :(得分:103)

OnPostExecute()接受参数(您从doInBackground()返回的对象)。将其更改为protected void onPostExecute(Void v)。如果您不提供参数,则方法签名不匹配,并且覆盖注释开始抱怨没有用此签名覆盖的函数。

答案 1 :(得分:24)

尝试:

在课程中,请右键单击Source -> Override/Implement methods..并查找onPostExecute()方法。它将为您提供包含所有类型参数的完整方法。

答案 2 :(得分:0)

如果要覆盖onPostExecute(),只需将doInBackground()中返回的内容用作onPostExecute()中的对象。

例如...

    @Override
    protected void doInBackground(Void...args0){
        // your code here...
        return value;
    }
    @Override
    protected void onPostExecute(void value){
        //code to run
    }

答案 3 :(得分:-1)

您应该添加super.onPostExecute()方法。例如:

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

编辑: 伙计们,我不知道你为什么拒绝回答这个问题。提问者缺少onPostExecute()方法的参数,并且没有实现它的超类型方法。这就是我发布这个答案的原因。