Android设置AlertDialog点击按钮对话框不关闭(转)
(转自:http://blog.csdn.net/winson_jason/article/details/8485524)
当我们在用到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基础TOP5_4:点击按钮更换样式,设置透明度
在res/drawable创建两个样式 点击前/点击后 round: <?xml version="1.0" encoding="utf-8"?> ...
- [Android] 设置AlertDialog打开后不消失
最近项目收尾,一堆bug要改,还要对用户操作体验做一些优化,也是忙的不行.周末难得清闲,出去逛逛,看看风景,还好因为习大大要来,南京最近的天气还不错,只是苦了当地的不少农民工,无活可干,无钱可拿.想想 ...
- jq点击按钮打开和关闭弹出层,点击除了当前按钮以外的地方关闭弹出层
1.html <a id="more" onclick="moreFun()">更多</a> <ul id="moreL ...
- [Android] 设置AlertDialog中按钮的可用(Enable)状态
弹出一个保存文件的对话框,要控制输入内容限制,同时内容为空时保存按钮不可用. 原文地址请保留http://www.cnblogs.com/rossoneri/p/4140184.html 直接上代码: ...
- android开发之AlertDialog点击按钮之后不消失 分类: android 学习笔记 2015-07-15 18:07 89人阅读 评论(0) 收藏
最近有这样一个需求,我需要用户在一个弹出框里输入密码来验证,验证成功当然好说,但是如果验证失败则需要把alertdialog的标题改为"密码错误,请重新输入",并且这个alertd ...
- android开发之AlertDialog点击按钮之后不消失
最近有这样一个需求,我需要用户在一个弹出框里输入密码来验证,验证成功当然好说,但是如果验证失败则需要把alertdialog的标题改为"密码错误,请重新输入",并且这个alertd ...
- android之AlertDialog 点击其它区域自己主动消失
遇到一个问题记录下来,在开发中使用了AlertDialog,想点击屏幕其它区域的时候让这个dialog消失,一開始不做不论什么设置,在小米手机能够正常显示,可是在三星中却有问题.后来发现少了一个属性: ...
- android之AlertDialog 点击其他区域自动消失
遇到一个问题记录下来,在开发中使用了AlertDialog,想点击屏幕其他区域的时候让这个dialog消失,一开始不做任何设置,在小米手机可以正常显示,但是在三星中却有问题,后来发现少了一个属性: V ...
- Android 设置AlertDialog的大小 .
AlertDialog dialog = builder.setTitle("消息列表") .setView(layout) .create(); dialog.show(); / ...
随机推荐
- Monkey测试3——Monkey测试结果分析
Monkey测试结果分析 一. 初步分析方法: Monkey测试出现错误后,一般的差错步骤为以下几步: 1. 找到是monkey里面的哪个地方出错 2. 查看Monkey里面出错前的一些事件动作,并手 ...
- servlet同一用户不同页面共享数据
如何实现不同页面之间的数据传递,实现页面的数据共享?常见的方法有以下4种: 1)表单提交(form) 2)sendRedirect()跳转 3)session技术 4)Cookie技术 表单提交 这是 ...
- require.js的一些了解
想了解一下的可以轻轻点开链接,想了解的可以点开链接,http://mp.weixin.qq.com/s?__biz=MzIxMTQyNzExNw==&mid=100000042&idx ...
- html 网页文本设计
1.文本的排版 1.1 <body> <h2>李白</h2> <p align="center" > <font face=& ...
- Quartz.NET开源作业调度框架系列
Quartz.NET是一个被广泛使用的开源作业调度框架 , 由于是用C#语言创建,可方便的用于winform和asp.net应用程序中.Quartz.NET提供了巨大的灵活性但又兼具简单性.开发人员可 ...
- 15款最好的 jQuery Modal(模态窗口)插件
jQuery 模态窗口插件帮助网站开发人员显示网页中的特定内容,让用户聚焦到这个地方.模态窗口是嵌入到当前网页中,不用重定向到新网页的弹出窗口.这种技术可以用在图像画廊,电子商务网站,登陆框,电子邮件 ...
- 使用gulp来构建一个前端项目
什么是gulp? gulp是一个前端项目构建工具,是自动化项目的构建利器,它不仅能对网站资源进行优化,而且在开发过程中很多重复的任务能够使用正确的工具自动完成.你可以使用gulp及其插件对你的项目代码 ...
- JavaScript 使用反斜杠对代码行进行折行
JavaScript对代码行进行折行-使用反斜杠 您可以在文本字符串中使用反斜杠对代码行进行换行.下面的例子会正确地显示: <html> <head> <script t ...
- Listbox与Listbox with key的区别
标准解释: ListboxVisualization as listbox in which a list of entries is displayed with one short descrip ...
- 需要记住的几个ASCII码
--------- A--------- a---------