2011-09-09 12 views
40

Non riesco a trovare il metodo onPostExecute() da chiamare quando si esegue AsyncTask. Quando provo a impostare la mia classe che estende AsyncTask in cui viene eseguito il override di onPostExecute(), viene visualizzato il seguente errore di compilazione.Impossibile eseguire l'override del metodo onPostExecute() in AsyncTask Class o ottenerlo per l'attivazione

'Il metodo OnPostExecute() di tipo AsyncTaskExampleActivity deve di esclusione o di implementare un metodo supertipo'

Ho provato sbarazzarsi del @Override annotazione. 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() { 
    } 
} 

risposta

99

OnPostExecute() prende un argomento (l'oggetto si torna 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.

22

Prova:

Nella classe provare a fare clic destro Source -> Override/Implement methods.. e cercare il metodo di onPostExecute(). Ti darà il metodo completo con tutti i tipi di argomenti dovrebbe ottenere.

+0

Wow molto bello. Grazie per il consiglio. – Ben

+0

In Android Studio puoi andare al menu Codice -> Sovrascrivi metodi (Ctrl + O) –

+0

Nella nuova versione, Clic destro -> Genera -> Sovrascrivi metodi –

-2

È necessario aggiungere il metodo super.onPostExecute(). Per esempio:

@Override 
protected void onPostExecute(Void nothing) 
{ 
    super.onPostExecute(nothing); 
} 

EDIT: Ragazzi, non ho idea del perché si sta downvoting la risposta. L'interrogante manca un argomento del metodo onPostExecute() e non ha implementato un metodo supertipo. Questa è la ragione per cui ho postato questa risposta.

+3

Perché dovrebbe aggiungerlo? Potresti per favore chiarire le ragioni? – FanaticD

Problemi correlati