运行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() {
}
}
答案 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()
方法的参数,并且没有实现它的超类型方法。这就是我发布这个答案的原因。