我正在尝试创建下载进度。我有我的类扩展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类型的封闭实例 范围
那我怎么能创造这个进步呢?
此外,我想创建不在此课程中的进度(因为我想要单独的功能和设计),但我不知道如何做到这一点。
谢谢你们的帮助。
答案 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的构造函数可以解决问题。