AlertDialog.Builder 阻止异步的办法
时间: 2023-07-11 11:47:03 浏览: 154
AlertDialog.Builder的异步行为是由系统决定的,我们无法直接阻止它。如果我们希望在用户点击确认按钮后再执行一些其他代码,可以在AlertDialog.Builder中设置一个监听器,这个监听器会在用户点击确认按钮时被调用,我们可以在这个监听器中执行我们需要的代码。
另外,如果您希望在对话框显示时阻止后面的代码执行,可以使用以下代码:
```
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle("提示");
builder.setMessage("确定要执行这个操作吗?");
builder.setPositiveButton("确认", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// 在这里执行确认操作后的代码
}
});
builder.setNegativeButton("取消", null);
AlertDialog dialog = builder.create();
dialog.show();
try {
synchronized(dialog) {
dialog.wait();
}
} catch (InterruptedException e) {
e.printStackTrace();
}
// 在这里执行的代码会在对话框关闭后才执行
```
在这个示例中,我们通过使用wait()方法使当前线程等待对话框关闭。当用户点击确认或取消按钮后,对话框会关闭,wait()方法会结束,后面的代码才会执行。这种方法需要注意线程同步的问题,不要在主线程中使用。
阅读全文