Java 无法让AsyncTask在Android中识别onPostExecute(所有参数/返回值都正确)
在doInBackground完成后,我的类扩展AsyncTask无法识别并调用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
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()