android - 异步任务中的进度对话框未关闭

标签 android

即使在 onPostExecute() 中运行了 progressDialog.dismiss,AsyncTask 中的进度对话框也不会关闭。

我已经尝试在 SO 上实现许多相关问题的答案,但到目前为止没有成功。

我确信我一定忽略了一些非常基本的东西,但我被卡住了。

任何指向解释和代码 fragment 的指针都会很棒,谢谢。

主要

public class Main extends Activity {
    String result;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        asyncTask task = new asyncTask("Loading ...", this);
        try {
            result = task.execute("Question").get();
        }
        catch (Exception e) {
            Log.e("Error: ", e.toString());
        }
    }
}

异步任务

public class asyncTask extends AsyncTask<String, Void, String> {

    private ProgressDialog progressDialog;
    private String message;
    private Context context;

    public asyncTask(String msg, Context ctx) {
        this.context = ctx;
        message = msg;
    }

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        progressDialog = new ProgressDialog(context);
        progressDialog.show(context, "", message, true, false);
    }

    @Override
    protected String doInBackground(String... params) {
        int count = 100000;
        for (int i = 0; i < count; i++) {
           // waste time
        }
        return "Answer";
    }

    @Override
    protected void onPostExecute(String result) {
        super.onPostExecute(result);
        progressDialog.dismiss();
    }
}

最佳答案

实际上你在做什么:

progressDialog.show(context, "", message, true, false);

应该是这样的:

progressDialog = ProgressDialog.show(context, "", message, true, false);

您必须静态调用 show 方法并将其分配给您的 progressDialog

关于android - 异步任务中的进度对话框未关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13758432/

相关文章:

android - 数据未插入到 Android 操作系统上的 Sqlite 数据库中

android - YouTube Android fragment 闪烁

android - 单击以选择微调器异常

android - 使用 View Pager Adapter 的位置更改全局变量

android - 从 GPS 坐标计算平均速度的最佳实践

android - GetMaxAmplitude 的取值范围

android - 什么是 libapp.so 和 libflutter.so?

java - 如何在Android中使用Animation从中心慢慢填充圆圈的背景颜色

Android:类似市场的可交换或可滚动标签

android - 使用 Phonegap 进行网页抓取