web-dev-qa-db-fra.com

Impossible de remplacer la méthode onPostExecute () dans la classe AsyncTask ou de la faire déclencher

Je ne parviens pas à appeler la méthode onPostExecute() lors de l'exécution d'une AsyncTask. Lorsque j'essaie de configurer ma classe avec l'extension AsyncTask dans laquelle la fonction onPostExecute() est remplacée, l'erreur de génération suivante est générée.

'La méthode onPostExecute () de type AsyncTaskExampleActivity doit redéfinir ou implémenter une méthode de type supertype '

J'ai essayé de supprimer l'annotation @Override. Cela supprime l'erreur de construction mais la méthode ne s'exécute toujours pas. Si quelqu'un avait la gentillesse de signaler ce que j'oublie, je l'apprécierais grandement.

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() prend un argument (l'objet que vous retournez de doInBackground()). Changez-le en protected void onPostExecute(Void v). Si vous ne fournissez pas l'argument, les signatures de méthode ne correspondent pas et l'annotation de remplacement commence à se plaindre du fait qu'il n'y a pas de fonction à remplacer par cette signature.

103
user658042

Essayer: 

Dans la classe, cliquez avec le bouton droit sur Source -> Override/Implement methods.. et recherchez la méthode onPostExecute(). Cela vous donnera une méthode complète avec tous les types d'arguments, le cas échéant.

24
Nikola Despotoski

si vous voulez que votre onPostExecute () soit surchargé, utilisez simplement ce qui a été renvoyé dans votre doInBackground () comme objet dans votre onPostExecute ().

Par exemple...

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