Android设置AlertDialog点击按钮对话框不关闭(转)
2014-11-19 14:08
507 查看
(转自:http://blog.csdn.net/winson_jason/article/details/8485524)
当我们在用到Android alertDialog创建对话框 的时候,我们会遇到一个问题就是:我们添加的按钮不论是用setNegativeButton还是用setPositiveButton添加的按钮,点击的时候,都会关闭对话框,但是我们的一 些实际需求,就需要保留这个对话框不动,例如输入校验码,密码之类的校验问题,如果用户输入错误,而关闭后弹出对话框,就很别扭了。
在网上找了一下,原来在源码中有一个boolean变量是控件对话框的关闭与否的mShowing变量,我们只需要利用反射改变这个变量就可以控制我们的对话框是不是关闭了。所以,我们可以通过手动设置mShowing的值来达到目的。
具体代码:
本人参考后补充:
若在定义Field提示出错时可改为:
java.lang.reflect.Field field = dialog.getClass().getSuperclass().getDeclaredField("mShowing");
一旦设置了不关闭DIALOG,点取消也不会关闭,所以需在取消事件下设置为可关闭:
当我们在用到Android alertDialog创建对话框 的时候,我们会遇到一个问题就是:我们添加的按钮不论是用setNegativeButton还是用setPositiveButton添加的按钮,点击的时候,都会关闭对话框,但是我们的一 些实际需求,就需要保留这个对话框不动,例如输入校验码,密码之类的校验问题,如果用户输入错误,而关闭后弹出对话框,就很别扭了。
在网上找了一下,原来在源码中有一个boolean变量是控件对话框的关闭与否的mShowing变量,我们只需要利用反射改变这个变量就可以控制我们的对话框是不是关闭了。所以,我们可以通过手动设置mShowing的值来达到目的。
try { Field field = dialog.getClass().getSuperclass().getDeclaredField("mShowing"); field.setAccessible(true); field.set(dialog, false);//true表示要关闭,false不关闭 } 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();
本人参考后补充:
若在定义Field提示出错时可改为:
java.lang.reflect.Field field = dialog.getClass().getSuperclass().getDeclaredField("mShowing");
一旦设置了不关闭DIALOG,点取消也不会关闭,所以需在取消事件下设置为可关闭:
... new AlertDialog.Builder(this) .setTitle(titleId) .setView(layout) .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { //点确定按钮 } }).setNegativeButton(android.R.string.cancel, new DialogInterface.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);//true表示要关闭 } catch (Exception e) { e.printStackTrace(); } } }) //null) .create().show(); }
相关文章推荐
- Android设置AlertDialog点击按钮对话框不关闭(转)
- Android中AlertDialog 点击按钮后不关闭对话框的功能
- 【Android】AlertDialog点击按钮后不自动关闭对话框
- 【转】Android AlertDialog 点击对话框外部区域不关闭的设置
- Android——点击对话框上按钮不关闭对话框
- Android Dialog 点击对话框外部区域不关闭的设置
- Android设置Dialog点击按钮也不会关闭
- Android Alert Dialog解决点击按钮对话框不关闭的问题
- Android Alert Dialog解决点击按钮对话框不关闭的问题
- Android——点击对话框上按钮不关闭对话框
- Android:在AlertDialog点击按钮隐藏对话框
- Android实现点击AlertDialog上按钮时不关闭对话框的方法
- Android中让AlertDialog点击了按钮后对话框不消失
- Android之点击对话框(AlertDialog.Builder)外部区域不关闭对话框的设置
- Android——点击对话框上按钮不关闭对话框
- Android对话框防止点击确定按钮时关闭
- 使Android应用的AlertDialog对话框中的按钮显示为ImageButton图标,并设置相应
- Android——点击对话框上按钮不关闭对话框
- Android Alert Dialog解决点击按钮对话框不关闭/的问题
- Android实现点击AlertDialog上按钮时不关闭对话框