1

URL から画像ビューを読み込んでいて、画像が読み込まれるのを待っている間に進行状況ダイアログを表示したいのですが、アプリを実行すると、porgress ダイアログが 0.5 秒間表示されてから消え、ステータスとは関係ありません。画像。画像が読み込まれると進行状況ダイアログが消えるようにするにはどうすればよいですか?

以下は私のコードです

//below is the download image task****************************************

private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
      ImageView bmImage;

      public DownloadImageTask(ImageView bmImage) {
          this.bmImage = bmImage;
      }

      protected Bitmap doInBackground(String... urls) {
          String urldisplay = urls[0];
          Bitmap mIcon11 = null;
          try {
            InputStream in = new java.net.URL(urldisplay).openStream();
            mIcon11 = BitmapFactory.decodeStream(in);
          } catch (Exception e) {
              Log.e("Error", e.getMessage());
              e.printStackTrace();
          }
          return mIcon11;
      }

      protected void onPostExecute(Bitmap result) {
          bmImage.setImageBitmap(result);
      }
    }

// above is the download imagetask ****************************************************

public class MyTask extends AsyncTask<Void, Void, Void> {
      private ProgressDialog progress;

    public MyTask(ProgressDialog progress) {
        this.progress = progress;
      }

      public void onPreExecute() {
        progress.show();
      }

      public void onPostExecute(Void unused) {

          progress.dismiss();
      }

    @Override
    protected Void doInBackground(Void... params) {
         new DownloadImageTask((ImageView) findViewById(R.id.ivget))
            .execute("http://dieboltdesigns.files.wordpress.com/2011/07/tom-brady-beast-poster-copy.png");

    //above makes the progress bar
        return null;
    }
    }

doinbackgound メソッド/asynctask が必要な場合は、コメントでお知らせください

ありがとう

4

1 に答える 1

3

問題は、私が間違っていなければ、あなたがAsyncTask内部で使用したことです。現在のスレッドとは独立した別のスレッドです。それが問題だ。AsyncTaskDownloadImageTask

DownloadImageTaskinのすべてのコードを書き留めるだけMyTaskです。

編集

private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
  ImageView bmImage;
  ProgressDialog pd;
  Context mContext;

  public DownloadImageTask(Context context,ImageView bmImage) {
      this.bmImage = bmImage;
      mContext = context;
  }

  public void onPreExecute() {
      pd = ProgressDialog.show(mContext, "dialog title","dialog message", true);   
  } 

  public void onPostExecute(Bitmap result) {
      pd.dismiss();
      if(result!=null)
          bmImage.setImageBitmap(result);
  }

  protected Bitmap doInBackground(String... urls) {
      String urldisplay = urls[0];
      Bitmap mIcon11 = null;
      try {
        InputStream in = new java.net.URL(urldisplay).openStream();
        mIcon11 = BitmapFactory.decodeStream(in);
      } catch (Exception e) {
          Log.e("Error", e.getMessage());
          e.printStackTrace();
      }
      return mIcon11;
  }
}
于 2013-06-15T05:16:35.483 に答える