2012-03-27 65 views
3

我正在尝试创建下载进度。我有我的课延伸的AsyncTask: 公共类DownloadFileTask扩展的AsyncTask在AsyncTask中下载进度android

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

@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没有外围实例是 范围

所以我怎么能创造这些进步访问?

此外,我想创造进步不在这个类(因为我想单独的功能和设计),但我没有弄清楚如何做到这一点。

谢谢你们的帮助。

+1

“我在Activity类我不是。” 开始DownloadTask通话- 为什么不?一个'AsyncTask'的主要用途是允许异步处理,不支持'Activity'。如果您以其他方式创建'AsyncTask',那么您可能需要重新考虑您需要做什么。 – Squonk 2012-03-27 09:52:12

回答

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(); 
     } 
    } 

要像

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

我猜想将上下文传递给您的自定义AsyncTask Loaders的构造函数可以做到这一点。

2

你应该为你的AsyncTask,这需要一个Context对象作为参数,例如创建一个构造函数:

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

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