我在运行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() {
}
}
OnPostExecute()
接受参数((从OnPostExecute()
返回的对象))。将其更改为doInBackground()
。如果不提供参数,则方法签名不匹配,并且覆盖注释开始抱怨没有可用该签名覆盖的函数。
尝试:
在课堂上尝试右键单击protected void onPostExecute(Void v)
,然后寻找Source -> Override/Implement methods..
方法。如果有的话,它将为您提供带有所有类型参数的完整方法。
如果要覆盖onPostExecute(),只需将doInBackground()中返回的内容用作onPostExecute()中的对象。
例如...
onPostExecute()
您应该添加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);
}
方法的参数,并且没有实现超类型方法。这就是我发布此答案的原因。