进度条未在AsyncTask中更新

时间:2011-10-28 22:22:25

标签: android progress

我正在尝试更新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()中调用的Activity I的布局中。我想通过AsyncTask更新它。这可能吗?为什么不更新?

2 个答案:

答案 0 :(得分:3)

要更新进度对话框,您需要从publishProgress(...)致电doInBackground。 检查AsyncTask doc

的Usage和publishProgress部分

答案 1 :(得分:1)

doInBackground线程无法访问UI线程。 onProgressUpdate允许您将更新发布到UI线程。这就是您的代码应该是这样的:

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

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

}