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