Android AlertDialog未显示,但为模态
有一个Android AlertDialog未显示,但为模态,android,android-alertdialog,Android,Android Alertdialog,有一个活动,该活动有一个名为method的事件,该事件在按下Enter或点击屏幕上的按钮时被调用。在这种情况下,如果满足某些条件,我将构建一个警报对话框 public void process() { .... final AlertDialog.Builder adb = new AlertDialog.Builder(this); adb.setTitle(getString(R.string.alert_title)); adb.setMessage(get
活动
,该活动有一个名为method的事件,该事件在按下Enter或点击屏幕上的按钮时被调用。在这种情况下,如果满足某些条件,我将构建一个警报对话框
public void process() {
....
final AlertDialog.Builder adb = new AlertDialog.Builder(this);
adb.setTitle(getString(R.string.alert_title));
adb.setMessage(getString(R.string.alert_question));
adb.setCancelable(false);
adb.setPositiveButton(getString(R.string.alert_answer_ok), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
....
}
});
adb.setNegativeButton(getString(R.string.alert_answer_no), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
....
}
});
adb.show();
....
}
但是,在emulator中运行时,当事件触发时,AlertDialog
不会显示:
它会阻止活动
,就像上面有一个模式对话框一样,但对话框本身不可见
这是什么原因造成的?如何正确显示对话框
编辑
也尝试过此方法,但仍然无效:
adb.create().show();
从create()获取AlertDialog
查看谷歌文档与此同时,我发现了它
问题不在于对话框的构建,而在于我的方法并没有随着对话框的显示而结束。
但是,由于该方法是在UI线程中调用的,所以直到该方法结束时,对话框才被绘制出来
所以我只是把代码放在对话框后面,放到一个单独的方法中,在显示对话框的条件的else情况下调用它,也在对话框按钮的侦听器中调用它
无论如何,谢谢你的帮助。你说的不清楚。
活动被阻塞,不响应点击,甚至不响应硬件后退按钮,但对话框不可见。我相信你传递了错误的上下文,请尝试“ClassName.this”而不仅仅是“this”,您需要UI线程上下文,通常MainActivity此
与*活动相同。在本例中,此
。我也试过了。但是没有任何改变。。。还尝试了getActivity()
…当调用方法process
时?什么是线程?我看不出有什么区别。你需要用builder.create()创建它;希望它能解决问题mAlertDialog.Builder.show()
正在创建它,请参见:是的,我看到了。您是对的,但在此之前,您需要创建对话框,然后才能使用show()方法。不太明白:在创建对话框之前,我“需要创建对话框”?
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setMessage(R.string.dialog_message)
.setTitle(R.string.dialog_title);
AlertDialog dialog = builder.create();