2012-03-27 77 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。關於第二個問題 - 沒有足夠的信息來回答它。希望這可以幫助。