Java 无法让AsyncTask在Android中识别onPostExecute(所有参数/返回值都正确)

Java 无法让AsyncTask在Android中识别onPostExecute(所有参数/返回值都正确),java,android,android-asynctask,Java,Android,Android Asynctask,在doInBackground完成后,我的类扩展AsyncTask无法识别并调用onPostExecute。我的代码如下: public class GetRankingsTASK extends AsyncTask<String, Void, Double> { @Override protected Double doInBackground(String... params){ //code to do stuff } @Ov

在doInBackground完成后,我的类扩展AsyncTask无法识别并调用onPostExecute。我的代码如下:

public class GetRankingsTASK extends AsyncTask<String, Void, Double> {

    @Override
    protected Double doInBackground(String... params){
        //code to do stuff
    }

    @Override
    protected void onPostExecute(double avgrank) {
        //code to do more stuff
    }
}
公共类GetRankingsTASK扩展异步任务{
@凌驾
受保护的双doInBackground(字符串…参数){
//代码做的东西
}
@凌驾
受保护的void onPostExecute(双avgrank){
//代码可以做更多的事情
}
}

onPostExecute创建编译器错误,因为该方法不重写超类。不确定我做错了什么,Android Studio也给了我一个警告,说onPostExecute从未被使用过,但它不应该被隐式调用吗?感谢您提供的任何帮助

可能是因为doInBackground返回一个Double(大写“D”)——对象,而onPostExecute需要一个Double(小写“D”)——原语类型。我不是100%确定,但这可能是原因。我还需要查看AsyncTask类的签名才能确定


**编辑此注释,以便将来的读者更容易理解。

可能是因为doInBackground返回一个Double(大写“D”)-对象,而onPostExecute需要一个Double(小写“D”)-原语类型。我不是100%确定,但这可能是原因。我还需要查看AsyncTask类的签名才能确定


**编辑了此评论,希望将来的读者能更容易理解。

我的建议是,下次要扩展
AsyncTask
时,也可以添加类型。然后Android Studio将为您生成方法

例如:

public class MyAsyncTask extends AsyncTask<Integer,Float,Double> {
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
    }

    @Override
    protected void onPostExecute(Double aDouble) {
        super.onPostExecute(aDouble);
    }

    @Override
    protected void onProgressUpdate(Float... values) {
        super.onProgressUpdate(values);
    }

    @Override
    protected Double doInBackground(Integer... params) {
        return null;
    }
}
公共类MyAsyncTask扩展了AsyncTask{
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
}
@凌驾
PostExecute上受保护的void(双倍){
super.onPostExecute(aDouble);
}
@凌驾
受保护的void onProgressUpdate(浮动…值){
super.onProgressUpdate(值);
}
@凌驾
受保护的双doInBackground(整数…参数){
返回null;
}
}

我的建议是,下次要扩展
AsyncTask
时,也要添加类型。然后Android Studio将为您生成方法

例如:

public class MyAsyncTask extends AsyncTask<Integer,Float,Double> {
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
    }

    @Override
    protected void onPostExecute(Double aDouble) {
        super.onPostExecute(aDouble);
    }

    @Override
    protected void onProgressUpdate(Float... values) {
        super.onProgressUpdate(values);
    }

    @Override
    protected Double doInBackground(Integer... params) {
        return null;
    }
}
公共类MyAsyncTask扩展了AsyncTask{
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
}
@凌驾
PostExecute上受保护的void(双倍){
super.onPostExecute(aDouble);
}
@凌驾
受保护的void onProgressUpdate(浮动…值){
super.onProgressUpdate(值);
}
@凌驾
受保护的双doInBackground(整数…参数){
返回null;
}
}

这可能是真的,因为
Double
是object,而
Double
是primitive-type。真不敢相信我没注意到,谢谢!这可能是真的,因为
Double
是object,而
Double
是primitive-type。真不敢相信我没注意到,谢谢!你是在后台还东西吗。您还将异步任务作为新的GetRankingsTASK()调用。execute()是否在doInBackground中返回某些内容。您还将异步任务称为new GetRankingsTASK().execute()