2011-10-28 72 views
0
沒有更新

我試圖同時下載一些東西,以更新的AsyncTask進度條..
下面是代碼:進度條的AsyncTask

@Override 
protected void onPreExecute() { 
    Intent myIntent = new Intent(mContext, Explanation.class); 
    mContext.startActivity(myIntent); 

    View inflater = View.inflate(mContext, R.layout.explanation, null); 
    mProgressDialog = (ProgressBar) inflater.findViewById(R.id.Explanation_ProgressBar); 
    } 

@Override 
protected void onProgressUpdate(Integer... values) { 
    mProgressDialog.setProgress(values[0]); 

} 

XML:

<ProgressBar 
    android:max="100"  
style="?android:attr/progressBarStyleHorizontal" 
    android:layout_alignParentBottom="true" android:layout_width="fill_parent" android:id="@+id/Explanation_ProgressBar" 
    android:layout_height="wrap_content"></ProgressBar> 

注意:進度條在我在onPreExecute()中調用的活動的佈局中。我想通過AsyncTask進行更新。這可能嗎?爲什麼不更新?

+0

我認爲它可能必須做如何UI元素應該在主線程上進行修改。 –

+0

實際上試試這個http://stackoverflow.com/questions/4836716/how-to-make-activity-ui-changes-from-an-android-asynctask –

+0

不應該的AsyncTask處理所有線程的東西? – Omar

回答

3

要更新進度對話框,您需要撥打publishProgress(...)doInBackground。 檢查使用和publishProgress部分的AsyncTask doc

1

doInBackground線程無法訪問UI線程。 onProgressUpdate允許您將更新發布到UI線程。這是你的代碼應該是這樣的:

@Override 
protected Boolean doInBackground(String... strings) {  
    this.publishProgress(progress); 
} 

@Override 
protected void onProgressUpdate(Integer... values) { 
    mProgressDialog.setProgress(values[0]); 

}