0

アクティビティをロードするときにProgressDialogを表示しようとしていますが、表示されません。

これがActivityonCreateで呼び出されるメソッドです

  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です

ありがとうございます。

4

2 に答える 2

0

バックグラウンド処理とフォアグラウンドでの進行状況の更新には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()
{
 }
于 2012-12-29T15:08:54.320 に答える
0

問題は、progressDialog.dismiss()が次の場所にある必要があることでした。

  • コードに表示された try/catchキャッチ
  • AsyncTaskのonPostExecuteメソッド。

また、テストに使用するデータが少なすぎるため、アップダウンが速すぎます。

于 2012-12-29T14:58:12.057 に答える