水平进度条不更新其状态

我试图显示水平进度栏“ 不ProgressDialog ”对我这样的活动 在这里输入图像说明

这里是我的XML文件包含

<ProgressBar android:id="@+id/pdialog" style="?android:attr/progressBarStyleHorizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:indeterminate="true" /> 

我想通过设置pdialog.setProgress()使用AsyncTask Class更新其状态,但它没有显示任何进度,它与progressdialog一起使用,但与水平进度条无关。

 public class MainActivity extends Activity { private SQLiteDatabase db; private Cursor cursor; private ProgressBar pdialog; private ImageButton btn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.start); btn = (ImageButton) findViewById(R.id.startbtn); pbar = (ProgressBar) findViewById(R.id.progressBar1); pdialog = (ProgressBar) findViewById(R.id.pdialog); pdialog.setMax(100); pdialog.setProgress(20); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { pdialog.setVisibility(View.VISIBLE); new DownloadFilesTask().execute(); } }); } private class DownloadFilesTask extends AsyncTask<Void, Integer, Integer> { int load = 1; protected Integer doInBackground(Void... params) { try { load = 10 * i; MainActivity.this.runOnUiThread(new Runnable() { @Override public void run() { pdialog.setProgress(load); } }); } } catch (Exception e) { } } protected void onProgressUpdate(Integer... progress) { if (progress[0] == 100) { pdialog.setVisibility(View.INVISIBLE); } } protected void onPostExecute(Integer params) { } } } 

Related of "水平进度条不更新其状态"

如果loadvariables得到正确更改:

而不是这个:

 MainActivity.this.runOnUiThread(new Runnable() { @Override public void run() { pdialog.setProgress(load); } }); 

你可以使用:

 publishProgress(load); 

这将自动调用UI线程:

 protected void onProgressUpdate(Integer... progress) { int p = progress[0]; if (p >= 100) { pdialog.setVisibility(View.INVISIBLE); }else{ pdialog.setProgress(p); } } 

更新:

删除android:indeterminate="true"在其他答案中指出。

在布局文件中,请从ProgressBar元素中删除以下属性android:indeterminate="true"

我有同样的问题,但我发现问题是接口View.OnClickListener()。 当pbar不在btn.setOnClickListener(新的View.OnClickListener(){})中时,它运行良好。 否则,它不会更新。 然后,我做了一个构造函数,将pbar传入OnXXXClickListener。

 private class OnXXXClickListener implements View.OnClickListener() { private ProgressBar bar; public OnXXXClickListener(ProgressBar bar) { this.bar = bar; } @Override public void onClick(View v) { bar.setProgess(50); new DownloadFilesTask().execute(); } }