无法覆盖AsyncTask类中的onPostExecute()方法或使其触发

问题描述 投票:44回答:4

我在运行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() {
    }
}
java android methods overriding android-asynctask
4个回答
105
投票

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


24
投票

尝试:

在课堂上尝试右键单击protected void onPostExecute(Void v),然后寻找Source -> Override/Implement methods..方法。如果有的话,它将为您提供带有所有类型参数的完整方法。


0
投票

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

例如...

onPostExecute()

-1
投票

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

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

编辑:伙计们,我不知道你为什么不赞成这个答案。发问者缺少@Override protected void onPostExecute(Void nothing) { super.onPostExecute(nothing); } 方法的参数,并且没有实现超类型方法。这就是我发布此答案的原因。

© www.soinside.com 2019 - 2024. All rights reserved.