当操作失败时,我试图创建一个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();
在此行中,这是我当前在屏幕上显示的活动。
预先感谢您的帮助。
答案 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();