AlertDialog.Builder没有点击确认按钮就运行了后面的代码
时间: 2023-12-01 21:04:06 浏览: 70
AlertDialog.Builder的show()方法是异步调用的,也就是说,当我们调用show()方法时,程序并不会等待用户的确认,而是会继续执行后面的代码。因此,如果我们在show()方法后面立即执行一些代码,这些代码会立即执行,而不会等待用户点击确认按钮。
如果我们希望在用户点击确认按钮后再执行一些其他代码,可以在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();
// 在这里执行的代码会在对话框显示出来后立即执行
```
在这个示例中,我们设置了一个确认按钮的监听器,当用户点击确认按钮时,这个监听器会被调用,在监听器中执行确认操作后的代码。而在AlertDialog.Builder的show()方法后面执行的代码会在对话框显示出来后立即执行。
如果您在确认按钮的监听器中执行了需要一定时间的操作,而在监听器之后的代码中又有需要等待的操作,您可以考虑使用异步线程或者Handler来解决。例如,您可以在确认按钮的监听器中启动一个异步线程,在线程中执行需要时间的操作,操作完成后使用Handler通知主线程执行后续操作。
阅读全文