让Activity
有一个名为方法的事件,在按 Enter 或点击屏幕按钮时调用该方法。在这种情况下,如果符合某些条件,我会构建AlertDialog
。
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();
....
}
但是,在模拟器中运行时,当事件触发时,AlertDialog
不会显示:
它会阻挡Activity
,就像上面有一个模态对话框,但对话框本身不可见。
导致这种情况的原因是什么?如何正确显示对话框?
也试过这个,但仍然行不通:
adb.create().show();
答案 0 :(得分:0)
class YourComponent extends Component {
constructor(props) {
super(props);
this.onUnload = this.onUnload.bind(this); // if you need to bind callback to this
}
onUnload(event) { // the method that will be used for both add and remove event
const gohome = confirm('go home?')
if (gohome === true) {
console.log('yay')
window.location = 'http://yourhomepage.com'
}else {
console.log('yes')
}
}
componentDidMount() {
window.addEventListener("beforeunload", this.onUnload)
}
componentWillUnmount() {
window.removeEventListener("beforeunload", this.onUnload)
}
render() {
return (
<div>
Try with window location
</div>
)
}
}
从create()
获取AlertDialogAlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setMessage(R.string.dialog_message)
.setTitle(R.string.dialog_title);
检查Google文档$$PRUNE
答案 1 :(得分:0)
与此同时,我明白了。
问题不在于对话框的构建,而是我的方法并没有以对话框的显示结束 但是,由于在UI线程中调用了该方法,因此在此方法结束之前,对话框才会被绘制...
所以我只是将对话框之后的代码放入一个单独的方法中,并在显示对话框的条件的else情况下调用它,并在对话框按钮的监听器中调用...
无论如何,谢谢你的帮助。