it-swarm.it

Non è possibile sovrascrivere il metodo onPostExecute () nella classe AsyncTask o farlo attivare

Ho difficoltà ad ottenere il metodo onPostExecute() da chiamare quando eseguo un AsyncTask. Quando provo a impostare la mia classe estendendo AsyncTask in cui il onPostExecute() viene sovrascritto, ottengo il seguente errore di compilazione.

'Il metodo onPostExecute () di tipo AsyncTaskExampleActivity deve sovrascrivi o implementa un metodo supertipo

Ho provato a eliminare l'annotazione @Override. Questo elimina l'errore di compilazione ma il metodo non viene ancora eseguito. Se qualcuno fosse così gentile da indicare ciò che sto trascurando, lo apprezzerei molto.

Codice:

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() accetta un argomento (l'oggetto restituito da doInBackground()). Cambialo in protected void onPostExecute(Void v). Se non si fornisce l'argomento, le firme del metodo non corrispondono e l'annotazione di sovrascrittura inizia a lamentarsi del fatto che non esiste alcuna funzione da sovrascrivere con questa firma.

103
user658042

Provare: 

Nella classe prova con il tasto destro Source -> Override/Implement methods.. e cerca il metodo onPostExecute(). Ti darà il metodo completo con tutti i tipi di argomenti dovrebbe ottenere.

24

se si desidera sovrascrivere onPostExecute (), è sufficiente utilizzare ciò che è stato restituito in doInBackground () come oggetto nel proprio onPostExecute ().

Per esempio...

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