我试图在从 url 获取图像到 imageview 时显示 progressDialog。 尝试显示 progressDialog 时,父 Activity 已泄漏窗口...
奇怪的是,我在此 Activity 中有两个 fragment ,在第一个 fragment 中,调用进度对话框的方式完全相同,但是当 fragment 被替换并且我再次尝试使其崩溃时,它崩溃了。
这是我在崩溃的第二个 fragment 中使用的异步任务:
class SkinPreviewImage extends AsyncTask<Void, Void, Void> {
private ProgressDialog progressDialog;
@Override
protected void onPreExecute() {
progressDialog = new ProgressDialog(getActivity());
progressDialog.setMessage("Loading preview...");
if(progressDialog != null) progressDialog.show();
progressDialog.setOnCancelListener(new OnCancelListener() {
public void onCancel(DialogInterface arg0) {
SkinPreviewImage.this.cancel(true);
}
});
}
@Override
protected Void doInBackground(Void... params) {
try {
URL newurl = new URL(url);
Bitmap mIcon_val = BitmapFactory.decodeStream(newurl.openConnection().getInputStream());
skinPreview.setImageBitmap(mIcon_val);
} catch (IOException e) {
Log.e("SkinStoreDetail", e.getMessage());
}
return null;
}
@Override
protected void onPostExecute(Void v) {
if(progressDialog != null) progressDialog.dismiss();
}
}
我见过一些类似的问题,但最接近解决我的问题的问题使用了我没有使用的父项的 groupactivity。
有什么建议吗?
最佳答案
您不能在 doInBackground()
中执行任何 UI 任务,否则您会崩溃。覆盖 onProgressUpdate()
并在那里执行。有关详细信息,请参阅文档:http://developer.android.com/reference/android/os/AsyncTask.html
关于android - 在 fragment 内的异步任务中显示()进度对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17346752/