Builder builder = new AlertDialog.Builder(this);
builder.setTitle(android.R.string.dialog_alert_title)
.setIcon(android.R.drawable.ic_dialog_info)
.setPositiveButton(android.R.string.ok,
new OnClickListener() {
public void onClick(DialogInterface dialog,
int which) {
// 不消失
try {
java.lang.reflect.Field field = dialog
.getClass().getSuperclass()
.getDeclaredField("mShowing");
field.setAccessible(true);
field.set(dialog, false);
} catch (Exception e) {
e.printStackTrace();
}
}
})
.setNegativeButton(android.R.string.no,
new OnClickListener() {
public void onClick(DialogInterface dialog,
int which) {
// 消失
try {
java.lang.reflect.Field field = dialog
.getClass()
.getSuperclass()
.getDeclaredField("mShowing");
field.setAccessible(true);
field.set(dialog, true);
} catch (Exception e) {
e.printStackTrace();
}
dialog.dismiss();
}
}).show();
以上方法,经过测试之后发现,如果在点击“确定”之前点击对话框以外的地方,对话框会消失;但如果点击“确定”再点击对话框以外的地方,则不会消失。
原文:http://www.cnblogs.com/HrLive/p/5066820.html