在AsyncTask android中下载进度

时间:2012-03-27 09:38:57

标签: java android

我正在尝试创建下载进度。我有我的类扩展AsyncTask: 公共类DownloadFileTask扩展了AsyncTask

下载开始时我想创建进度:

  @Override
  protected void onPreExecute() {



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

但是我不知道我应该给新的ProgressDialog什么上下文因为我不在Activity类中。我尝试给出一些上下文,但是有一个错误:

无法访问Main_Tab类型的封闭实例  范围

那我怎么能创造这个进步呢?

此外,我想创建不在此课程中的进度(因为我想要单独的功能和设计),但我不知道如何做到这一点。

谢谢你们的帮助。

3 个答案:

答案 0 :(得分: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();
      }
    }

启动类似

的DownloadTask调用
 DownloadFileTask task = new DownloadFileTask(MyActivity.This);
 task.execute();

答案 1 :(得分:2)

您应该为AsyncTask创建一个构造函数,它将Context个对象作为参数,例如:

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

然后,您可以使用context字段初始化ProgressDialog。关于第二个问题 - 没有足够的信息来回答它。希望这会有所帮助。

答案 2 :(得分:0)

我想将上下文传递给您定制的AsyncTask Loaders的构造函数可以解决问题。