我试图在加载活动时显示一个ProgressDialog,但它没有显示。
下面是Activity onCreate
调用的方法 private void loadBuilding(String[] b) {
ProgressDialog pd = new ProgressDialog(this);
pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
pd.setMax(6);
pd.setTitle(R.string.loading);
pd.show();
LoadBuilding lb = new LoadBuilding();
lb.initialize(this, pd);
lb.execute(b);
try {
lb.get();
} catch (Exception e) {
e.printStackTrace();
}
pd.dismiss();
if (building == null)
showError();
}
LoadBuilding是一个AsyncTask,我在其中加载建筑并设置进度。
谢谢大家。
问题是progressDialog.dismiss()必须在:
- 代码 中显示的try/catch的catch
- AsyncTask的onPostExecute方法
而且我使用的测试数据太少了,所以它上升和下降得太快了。
使用AsyncTask用于后台处理和前台更新进度。我认为这最适合你的任务。
private class DownloadFilesTask extends AsyncTask<URL, Integer, Long> {
protected Long doInBackground(URL... urls) {
int count = urls.length;
long totalSize = 0;
for (int i = 0; i < count; i++) {
totalSize += Downloader.downloadFile(urls[i]);
publishProgress((int) ((i / (float) count) * 100));
// Escape early if cancel() is called
if (isCancelled()) break;
}
return totalSize;
}
protected void onProgressUpdate(Integer... progress) {
setProgressPercent(progress[0]);
}
protected void onPostExecute(Long result) {
showDialog("Downloaded " + result + " bytes");
}
}
尝试在Try and catch块
中添加progressDismiss()try
{
pg.dismiss();
}
Catch()
{
}