web-dev-qa-db-ger.com

Die onPostExecute () -Methode in der AsyncTask-Klasse kann nicht überschrieben werden oder kann ausgelöst werden

Ich habe Probleme, die onPostExecute()-Methode aufzurufen, wenn eine AsyncTask ausgeführt wird. Wenn ich versuche, meine Klasse so einzurichten, dass sie AsyncTask erweitert, in der onPostExecute() überschrieben wird, erhalte ich den folgenden Build-Fehler.

'Die Methode onPostExecute () vom Typ AsyncTaskExampleActivity muss .__ sein. Überschreiben oder Implementieren einer Supertyp-Methode '

Ich habe versucht, die Annotation @Override loszuwerden. Dadurch wird der Erstellungsfehler beseitigt, die Methode wird jedoch immer noch nicht ausgeführt. Wenn jemand so freundlich wäre, darauf hinzuweisen, was ich übersehen würde, würde ich es sehr schätzen.

Code:

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() {
    }
}
42
Ben

OnPostExecute() nimmt ein Argument (das Objekt, das Sie von doInBackground() zurückgeben). Ändern Sie es in protected void onPostExecute(Void v). Wenn Sie das Argument nicht angeben, stimmen die Methodensignaturen nicht überein, und die Überschreibungsanmerkung beschwert sich darüber, dass es keine Funktion gibt, die diese Signatur überschreibt.

103
user658042

Versuchen: 

Klicken Sie in der Klasse mit der rechten Maustaste auf Source -> Override/Implement methods.. und suchen Sie nach der onPostExecute()-Methode. Sie erhalten eine vollständige Methode mit allen Arten von Argumenten.

24

wenn Sie Ihre onPostExecute () überlagern möchten, verwenden Sie einfach das, was in Ihrem doInBackground () zurückgegeben wurde, als Objekt in Ihrer onPostExecute ().

Zum Beispiel...

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