android - 在 fragment 内的异步任务中显示()进度对话框

标签 android

我试图在从 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/

相关文章:

java - 位置和 GeoPoint distanceTo()

java - 如何为 webview 创建包装器对象

android - GreenDao:扩展 DAO 文件

java - 调整 inflatedView 大小不起作用

Android - 将 Nexus 上的文件保存到外部目录 - 只能获得模拟版本

java - 将图像放入 webview 并适合其宽度

android - 为什么在我发送 SMS 时我的 ContentObserver 没有被调用?

Android Dialogfragment消除黑边(上下)

java - 测试 ClassNotFound 异常

java - 尝试在空对象引用上调用虚拟方法 '...'