您的位置:首页 > 移动开发 > Android开发

Android Alert Dialog解决点击按钮对话框不关闭/的问题

2013-01-09 14:24 459 查看
当我们在用到Android alertDialog创建对话框 的时候,我们会遇到一个问题就是:我们添加的按钮不论是用setNegativeButton还是用setPositiveButton添加的按钮,点击的时候,都会关闭对话框,但是我们的一 些实际需求,就需要保留这个对话框不动,例如输入校验码,密码之类的校验问题,如果用户输入错误,而关闭后弹出对话框,就很别扭了。
在网上找了一下,原来在源码中有一个boolean变量是控件对话框的关闭与否的mShowing变量,我们只需要利用反射改变这个变量就可以控制我们的对话框是不是关闭了。所以,我们可以通过手动设置mShowing的值来达到目的。

不关闭对话框:

try {
Field field = dialog.getClass().getSuperclass().getDeclaredField("mShowing");
field.setAccessible(true);
field.set(dialog, false);
} catch (Exception e) {
e.printStackTrace();
}

关闭对话框:

try {

Field field = dialog.getClass().getSuperclass().getDeclaredField("mShowing");
field.setAccessible(true);

field.set(dialog, true);

} catch (Exception e) {
e.printStackTrace();
}

具体代码:

new AlertDialog.Builder(Bookstore.getInstance())
.setTitle(r.getString(“提示”)
.setMessage(“不能打开”)
.setPositiveButton(“确定”), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
try {//下面三句控制弹框的关闭
Field field = dialog.getClass().getSuperclass().getDeclaredField("mShowing");
field.setAccessible(true);
field.set(dialog,true);//true表示要关闭
} catch (Exception e) {
e.printStackTrace();
}

}
}).show();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: