java - Android 对话框在一定的计算后关闭

标签 java android dialog

我遇到以下问题:

我使用这样的对话框创建了一个等待旋转器

final Dialog progDialog = new Dialog(context);
progDialog.setContentView(R.layout.progress_dialog);
progDialog.setTitle("Calculating...");
progDialog.setCancelable(false);
progDialog.setCanceledOnTouchOutside(false);

WindowManager.LayoutParams lp = progDialog.getWindow().getAttributes();
lp.dimAmount = 0.7f;
progDialog.show();

然后,我在后台计算一些东西

for()...
    for()...

计算完成后,我想关闭对话框

progDialog.dismiss();

但是,这会导致我的对话框根本不会显示。当我删除最后一行时,会显示该对话框,但永远不会关闭。有解决办法吗?

最佳答案

你最好尝试使用 AsyncTask

private class YourAsyncTask extends AsyncTask<Void, Void, Void> {
    private ProgressDialog progDialog;

    public YourAsyncTask(MyMainActivity activity) {
        progDialog = new ProgressDialog(activity);
    }

    @Override
    protected void onPreExecute() {
       progDialog.setContentView(R.layout.progress_dialog);
       progDialog.setTitle("Calculating...");
       progDialog.setCancelable(false);
       progDialog.setCanceledOnTouchOutside(false);

       progDialog.show();
    }
    @Override
    protected Void doInBackground(Void... args) {
        // do background work here
        return null;
    }
    @Override
    protected void onPostExecute(Void result) {
         // do UI work here
        if (progDialog.isShowing()) {
            progDialog.dismiss();
        }
    }
}

在您的主要 Activity 中使用上述代码。并且,在 doInBackground 中进行计算部分。

要为您的计算设置计时器,请尝试以下代码:

 Runnable progressRunnable = new Runnable() {

        @Override
        public void run() {
            progDialog.cancel();
        }
    };

    Handler pdCanceller = new Handler();
    pdCanceller.postDelayed(progressRunnable, 3000);

添加显示/隐藏:

progDialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
    @Override
    public void onCancel(DialogInterface dialog) {
        theLayout.setVisibility(View.GONE);
    }
});

更新:

ProgressDialog 类自 API 26 起已弃用

关于java - Android 对话框在一定的计算后关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59022797/

相关文章:

gwt - 当用户单击对话框之外的任何位置时,如何使对话框隐藏?

android - 主题不适用于 Android 上的 DialogFragment

java - 如何访问从 servlet 传递的 .jsp 中的变量?

android - 使用 Butterknife 的 OnSeekBarChangeListener

java - getClass() 在基类的构造函数中报告哪个类

android - 如何在 MediaPlayer 上设置代理

android - 如何对长文本进行分页?

android - 点击 map 标记时如何弹出对话框?

java - Lombok @Data 是否会覆盖现有的 toString 和 hashCode 方法?

java - Hibernate @OneToMany 来自更新 [0] 的意外行数;实际行数 : 0; expected: 1