AlertDialog将不会显示在我的应用程序中-为什么会显示?

时间:2019-01-16 13:48:37

标签: android alertdialog

当操作失败时,我试图创建一个AlertDialog。但是我不能在屏幕上显示它,因为我做了本教程显示的内容,所以我不明白为什么。

我知道调用displayDialogError是因为我的输出显示了大声笑值。 但是,当应该弹出AlertDialog时,什么也没有出现。

public String lol;

public void doThings(String str) {
    lol = str;
    if (!lol.isEmpty()) {
        System.out.println(lol);
        displayDialogError();
    }
    else
        System.out.println("Request worked");
}

public void displayDialogError() {
    AlertDialog alertDialog = new AlertDialog.Builder(this).create();
    alertDialog.setTitle("Alert");
    alertDialog.setMessage("Alert message to be shown");
    alertDialog.setButton(AlertDialog.BUTTON_NEUTRAL, "OK",
            new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();
                }
            });
    alertDialog.show();
}

AlertDialog alertDialog =新的AlertDialog.Builder(this).create();

在此行中,是我当前在屏幕上显示的活动。

预先感谢您的帮助。

3 个答案:

答案 0 :(得分:3)

设置所有对话框参数后,应调用create()。另外,建议您一开始只创建一次。每次调用此方法时,没有理由重新创建相同的对话框。

    AlertDialog.Builder builder = new AlertDialog.Builder(<YourActivity>.this);
    builder.setTitle("Alert");
    builder.setMessage("Alert message to be shown");
    builder.setButton(AlertDialog.BUTTON_NEUTRAL, "OK",
            new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();
                }
            });

    AlertDialog alertDialog = builder.create();

alertDialog移至类变量,或将其作为参数传递给您的方法。然后在需要时显示它。

    alertDialog.show();

并确保您在UI线程上运行它。如果从其他线程调用此方法,请尝试以下操作:

runOnUiThread(new Runnable() {
            @Override
            public void run() {
                alertDialog.show();
            }
        }

答案 1 :(得分:0)

您可以尝试更新代码吗可能存在上下文问题

 public void displayDialogError() {
    AlertDialog alertDialog = new AlertDialog.Builder(YourActivity.this);
    alertDialog.setTitle("Alert");
    alertDialog.setMessage("Alert message to be shown");
    alertDialog.setButton(AlertDialog.BUTTON_NEUTRAL, "OK",
            new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();
                }
            });
    alertDialog.show();
}

答案 2 :(得分:0)

尝试一下:

new AlertDialog.Builder(YourActivity.this).setTitle("Alert")
    .setMessage("Alert message to be shown")
    .setPositiveButton("OK",
        new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
            }
        }).show();