2012-03-27 8 views
3

J'essaie de créer des progrès de téléchargement. J'ai ma classe qui étend AsyncTask: DownloadFileTask public class étend AsyncTaskTélécharger le progrès dans AsyncTask android

Lors du téléchargement commence je veux créer des progrès:

@Override 
    protected void onPreExecute() { 



    progressDialog = new ProgressDialog(whatContext); 
    progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 
    progressDialog.setMessage("Loading..."); 
    progressDialog.setCancelable(false); 
    progressDialog.show(); 
    } 

Mais je ne sais pas quel contexte je devrais donner à nouveau ProgressDialog parce que je ne suis pas dans la classe d'activité. J'ai essayé de donner un contexte, mais il y a une erreur:

Aucune instance englobante du Main_Tab de type est accessible dans champ

Alors, comment je pourrais créer ces progrès?

Aussi je voulais créer des progrès pas dans cette classe (parce que je veux séparer les fonctions et le design), mais je n'ai pas compris comment faire cela.

Merci les gars pour l'aide.

+1

"Je ne suis pas en classe d'activité." - Pourquoi pas? L'utilisation principale d'un 'AsyncTask' est de permettre un traitement asynchrone qui ne supporte pas une' Activity'. Si vous créez une 'AsyncTask' d'une autre manière, vous devrez peut-être repenser ce que vous devez faire. – Squonk

Répondre

3
public class DownloadFileTask extends AsyncTask{ 
Context mContext; 

    public DownloadFileTask(Context context) { 
      this.mContext = context; 

     } 


    @Override 
     protected void onPreExecute() { 



     progressDialog = new ProgressDialog(mContext); 
     progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 
     progressDialog.setMessage("Loading..."); 
     progressDialog.setCancelable(false); 
     progressDialog.show(); 
     } 
    } 

Pour commencer appel DownloadTask comme

DownloadFileTask task = new DownloadFileTask(MyActivity.This); 
task.execute(); 
0

Je suppose que passer le contexte à votre constructeur AsyncTask personnalisé Loaders peut faire l'affaire.

2

Vous devez créer un constructeur pour votre AsyncTask, qui prend un objet Context comme paramètre, par exemple:

public DownloadFileTask(Context context) { 
    this.context = context; 
} 

Ensuite, vous pouvez utiliser le champ context pour initialiser le ProgressDialog. Concernant la deuxième question - il n'y a pas assez d'informations pour y répondre. J'espère que cela t'aides.

Questions connexes