无法覆盖 AsyncTask 中的 onPostExecute() 方法 Class

Can't Override onPostExecute() method in AsyncTask Class

我知道有几个问题与这个问题非常相似,但到目前为止它们都没有帮助我。我仍然无法覆盖此 AsyncTasks。 你能帮帮我吗?

我已经确保 doInBackground() 开发了 onPostExecute() 需要的某些类型(第一个示例中的布尔值和第二个示例中的 JSON)。

除了我将 AsyncTask 扩展为原始类型之外,您是否看到任何其他内容(不确定在此处输入什么)

这是 eclipse 告诉我每种方法的错误:

The method onPostExecute(Boolean) of type Register.NetCheck must override or implement a supertype method

对于 类 日食告诉我:

  • The type Register.NetCheck must implement the inherited abstract method AsyncTask.doInBackground(Object...)

  • AsyncTask is a raw type. References to generic type AsyncTask should be parameterized

示例 1:

private class NetCheck extends AsyncTask {

        @Override
        protected void onPreExecute(){
            super.onPreExecute();
            do.something();
        }

        @Override
        protected Boolean doInBackground (String... args){
               if (do.something.worked){
                   return true; }
               else { return false}
        }

        @Override
        protected void onPostExecute(Boolean th){
            evalute.input.boolValue();
        }
    }

示例 2:

private class ProcessRegister extends AsyncTask {

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            show.some.dialog();
        }
        @Override
        protected JSONObject doInBackground(String... args) {
        JSONObject json = generate.some.json();
            return json;
        }
        @Override
        protected void onPostExecute(JSONObject json) {
           evaluate.something();
        }

}

您的异步任务不需要 return 值,因此它无法识别

protected void onPostExecute(Boolean th)

试试这个:

private class NetCheck extends AsyncTask<String, Void, Boolean> {

    @Override
    protected void onPreExecute(){
        super.onPreExecute();
        do.something();
    }

    @Override
    protected Boolean doInBackground (String... args){
           if (do.something.worked){
               return true; }
           else { return false}
    }

    @Override
    protected void onPostExecute(Boolean th){
        evalute.input.boolValue();
    }
}

将第二个示例的 Boolean 替换为 JSONObject。尝试总是使用 IDE 来自动为你执行方法,将避免这样的问题。

您应该使用类型扩展 AsyncTask。请参阅下面的示例。

public class MyTask extends AsyncTask<Void, String, Integer> {
    @Override
    protected Integer doInBackground(Void... params) {
        return null;
    }

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
    }

    @Override
    protected void onPostExecute(Integer integer) {
        super.onPostExecute(integer);
    }

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

    @Override
    protected void onCancelled(Integer integer) {
        super.onCancelled(integer);
    }

    @Override
    protected void onCancelled() {
        super.onCancelled();
    }
}

用适当的类型替换 Void、String、Integer。更多信息是 here。 关于 Eclipse。删除并安装 Android Studio.