如何在 ProgressDialog 之后显示 AlertDialog

发布于 2024-10-21 14:25:08 字数 269 浏览 0 评论 0原文

我在网上搜索但没有找到满意的答案。

我有一项需要一些时间才能完成的任务,因此我使用 ProgressDialog 来通知用户应用程序正在执行某些操作。

如果在长时间任务期间遇到错误,我想显示一个 AlertDialog 让用户知道该错误。

所以我编写了代码,但 ProgressDialog 关闭并且 AlertDialog 不显示。

我使用 onCreateDialog() 方法来管理我的对话框。

有人知道为什么吗?

谢谢。

I searched across the web but I didn't find any satisfying answer.

I have a task that can make some time to complete so I use a ProgressDialog to inform the user that the application is doing something.

If an error is encountred during the long task, I want to display an AlertDialog to let the user know about the error.

So I wrote the code but the ProgressDialog dismisses and the AlertDialog doesn't show.

I use the onCreateDialog() method to manage my dialogs.

Someone knows why?

Thank you.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

送你一个梦 2024-10-28 14:25:08

我不确定为什么你的代码不起作用,但如果这是一个计时问题,你可以尝试使用 处理程序 在短暂延迟后调用显示第二个对话框:

new Handler().post(new Runnable() {
    @Override
    public void run() {
        showDialog(ERROR_CREDENTIALS_DIALOG);
    }
});

这可能会给 UI 线程一些时间来清理第一个对话框,该对话框的存在可能会影响第二个对话框。您也可以尝试使用 postDelayed 来代替较小的时间延迟,例如 100 毫秒。

I'm not sure why your code isn't working, but if it's a timing issue you might try using a Handler to call show your second dialog after a short delay:

new Handler().post(new Runnable() {
    @Override
    public void run() {
        showDialog(ERROR_CREDENTIALS_DIALOG);
    }
});

This may give the UI thread some time to clean up the first dialog, whose presence may be affecting the second. You might also try postDelayed instead with a small time delay such as 100 milliseconds.

债姬 2024-10-28 14:25:08

您可以使用以下功能来显示警报对话框。

    public void OpenDialog()
    { 
          AlertDialog.Builder dialog = new AlertDialog.Builder(this);
          dialog.setTitle("Error");
          dialog.setTitle("Your Message");

            dialog.setPositiveButton("Ok", new DialogInterface.OnClickListener() {

        public void onClick(DialogInterface dialoginterface, int buttons) 
        {
            try
            {

            }
            catch(Exception e)
            {
                e.printStackTrace();
            }
        }
    });

    dialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() 
    {

        public void onClick(DialogInterface arg0, int buttons) 
        {
        }
    });
    dialog.show();
    }

You can use below function to show alert Dialog .

    public void OpenDialog()
    { 
          AlertDialog.Builder dialog = new AlertDialog.Builder(this);
          dialog.setTitle("Error");
          dialog.setTitle("Your Message");

            dialog.setPositiveButton("Ok", new DialogInterface.OnClickListener() {

        public void onClick(DialogInterface dialoginterface, int buttons) 
        {
            try
            {

            }
            catch(Exception e)
            {
                e.printStackTrace();
            }
        }
    });

    dialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() 
    {

        public void onClick(DialogInterface arg0, int buttons) 
        {
        }
    });
    dialog.show();
    }
鹤舞 2024-10-28 14:25:08

在打开警报对话框之前,您应该确保进度对话框已完全关闭。我为此使用取消方法。


ProgressDialog.setOnCancelListener(this);

...

public void onCancel(final DialogInterface 对话框) {
显示警报对话框();
}

...

ProgressDialog.cancel()


任务完成后,您将调用 ProgressDialog.cancel();
这将触发 onCancel 方法并打开警报对话框,很好地显示警报输出和动画。

注意:您也可以使用miss()来实现此目的,但它更容易出错。

You should make sure that the progress dialog is fully dismissed before opening the alert dialog. I use the cancel method for that.


progressDialog.setOnCancelListener(this);

...

public void onCancel(final DialogInterface dialog) {
showAlertDialog();
}

...

progressDialog.cancel()


Once you task is complete you will call progressDialog.cancel();
This will trigger the onCancel method and open the alert dialog showing nicely both alert out and in animations.

Note: you can also use dismiss() for this, but it's a bit more error prone.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文