目前,我有一個類下載Asynctask的圖像擴展。 我想要實現一個小的進度條,以向用戶顯示在該空間中加載的圖像。我試圖將Asynctask類放在課堂活動中。現在的問題是調用我需要該類的類是靜態的。但是如果我把靜態類,我無法控制進度對話框。進度條小而下載的圖像不可見
我班DownloadImage:
public class DownloadImages extends Activity{
public class DownloadImage extends AsyncTask<String, Void, Bitmap> {
ImageView bmImage;
// progressBar = new ProgressBar(activity, null, android.R.attr.progressBarStyleSmall);
public DownloadImage(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);
Log.e("TAG","IMAGEN CARGADA");
}
// protected void onPreExecute(){
// }
}
}
要創建的進度,我想我需要的類是一個活動:
progressBar = new ProgressBar(activity, null, android.R.attr.progressBarStyleSmall);
這是我創造了我的問題的解決方案:
public class DownloadImages extends Activity{
ProgressBar progressBar = new ProgressBar(DownloadImages.this, null, android.R.attr.progressBarStyleSmall);
public class DownloadImage extends AsyncTask<String, Void, Bitmap> {
ImageView bmImage;
public DownloadImage(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);
Log.e("TAG","IMAGEN CARGADA");
}
protected void onPreExecute(){
progressBar.setVisibility(View.VISIBLE);
}
}
}
現在的問題是,如果我打電話給DownloadImage,這個類必須是靜態的,但如果我這樣做E靜態我不能使用progressBar,除非它被聲明爲靜態,如果我認爲靜態我不能用我的活動創建它。
任何解決方案?
謝謝,我的英語不好
似乎是一個很好的解決方案。我現在如何調用?,在以這種方式調用之前,現在我需要添加另一個參數'new DownloadImages.DownloadImage((ImageView)vArea.findViewById(R.id.img_area))。execute(areas.get(o ).p2);' – jlopez
DownloadImages.DownloadImage((this,ImageView)vArea.findViewById(R.id.img_area))。execu te(areas.get(o).p2); 也接受答案,如果這可以解決您的問題,所以其他人可能知道:) – Hardik4560
不起作用,語法錯誤 – jlopez