Alert Dialog是Android中常见的弹窗,它可以通过设置positive button、negative button以及其它按钮来与用户交互。但在某些情况下,在设置positive button时可能会遇到问题,例如,当Alert Dialog显示时,positive button无法响应点击事件,或者点击positive button后,Alert Dialog无法正常关闭等问题。
解决这些问题的方法通常是进行以下操作:
例如,在以下代码中,设置了一个title为“确认退出”的Alert Dialog,并为其设置了一个positive button,点击该按钮将关闭Alert Dialog。
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("确认退出");
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// 点击确定按钮后的操作
finish();
}
});
builder.show();
如果在点击positive button时UI线程被阻塞,可能会导致无法响应点击事件的问题。因此,在进行一些耗时的操作时,最好将其放到子线程中执行。
例如,在以下代码中,当点击positive button时,将会进行一个耗时的操作:
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("确认退出");
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// 进行一些耗时的操作
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
finish();
}
});
builder.show();
此时,点击positive button后,由于UI线程阻塞,将会导致Alert Dialog无法正常关闭。
解决这个问题的方法是,将耗时的操作放到子线程中执行,例如:
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("确认退出");
builder.setPositiveButton("