【问题标题】:Can't Override onPostExecute() method in AsyncTask Class or get it to trigger无法覆盖 AsyncTask 类中的 onPostExecute() 方法或使其触发
【发布时间】:2011-11-13 10:47:27
【问题描述】:

在运行AsyncTask 时,我无法调用onPostExecute() 方法。当我尝试设置扩展 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


    【解决方案1】:

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

    @Override
    protected void onPostExecute(Void nothing)
    {
       super.onPostExecute(nothing);
    }
    

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

    【讨论】:

    • 他为什么要加呢?请说明原因?
    【解决方案2】:

    如果您希望 onPostExecute() 被覆盖,只需使用 doInBackground() 中返回的内容作为 onPostExecute() 中的对象。

    例如...

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        试试:

        在类中尝试右键单击Source -&gt; Override/Implement methods.. 并查找onPostExecute() 方法。它会给你完整的方法,如果它得到所有类型的参数。

        【讨论】:

        • 在 Android Studio 中你可以去菜单 Code -> Override Methods (Ctrl + O)
        • 在新版本上,右键 -> 生成 -> 覆盖方法
        猜你喜欢
        • 2015-05-08
        • 1970-01-01
        • 1970-01-01
        • 2016-12-15
        • 2017-03-07
        • 1970-01-01
        • 1970-01-01
        • 2017-02-06
        • 1970-01-01
        相关资源
        最近更新 更多