- 浏览: 150058 次
- 性别:
- 来自: 五指山
文章分类
最新评论
-
dengdonglin888:
qq_30221445 写道你好 请问这种数据能解吗 < ...
Simple XML -
qq_30221445:
你好 请问这种数据能解吗 <request> ...
Simple XML -
画个逗号给明天qu:
画个逗号给明天qu 写道
Android上传文件到服务器 -
画个逗号给明天qu:
...
Android上传文件到服务器 -
alranger:
我在jsp页面加上这一段代码后,问题还是存在。
解决Ext在ie9报错:不支持extjs对象的“createContextualFragment属性或方法”
转自:http://blog.csdn.net/mvpsendoh/article/details/6649279
最近在做个小项目,其中有涉及到dialog的按钮的事件处理,情形是这样的:
在按钮的监听器中,我希望做一个if else 判断,如果条件符合,就关闭对话框,如果条件不符合,就不关闭对话框,并做其他处理。
首先,默认情况下,按下dialog按钮就会将对话框关闭。如果我们需要维持对话框,就不能让它关闭了。比如我们要使用对话框弹出一个目录,希望点击对话框的按钮时返回上层目录。这时如果咔嚓一声,它就把我们的对话框给关了,这就不好了。如何使它不关闭呢?
请看下面代码:
- builder.setPositiveButton("返回", new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int which) {
- try {
- field = dialog.getClass().getSuperclass().getDeclaredField("mShowing");
- field.setAccessible(true);
- field.set(dialog,false);
- dialog.dismiss();
- } catch (SecurityException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (NoSuchFieldException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IllegalArgumentException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IllegalAccessException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- //做其他处理
- });
- builder.show();
按照上面的try{}语句中那样设置,就不会在按下按钮时关闭对话框了。那如果我们想要先做个条件判断后,再决定是否要关闭对话框呢?
大家第一时间应该会想:这还不简单吗?加个if else不就得了!如下:
- builder.setPositiveButton("返回", new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int which) {
- if(!condition){
- try {
- field = dialog.getClass().getSuperclass().getDeclaredField("mShowing");
- field.setAccessible(true);
- field.set(dialog,false);
- dialog.dismiss();
- } catch (SecurityException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (NoSuchFieldException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IllegalArgumentException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IllegalAccessException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- else {
- dialog.dismiss();
- }
- }
- });
不过遗憾的是,这样写虽然简单,但是却不起作用。这样设置了以后,是存在的不稳定因素的。
为什么呢?因为按下dialog会不会被关闭,我们可以把它当做dialog的一个属性。我们在之前为了使按下按钮不关闭dialog,我们改变了它默认的属性,正是通过下面的代码:
field = dialog.getClass().getSuperclass().getDeclaredField("mShowing");
field.setAccessible(true);
field.set(dialog,false);
此时dialog的属性已经改变了。如果第一次条件判断成功,dialog属性被修改了。而第二次条件判断不成功,执行else语句,此时dialog的属性已经在第一次条件判断中被设置为按下按钮不关闭。那么此时无论你调用多少次dialog的dismiss方法,他也不会把对话框关掉了。
那么怎么办呢?简单,把他的属性改回来就行了:
- builder.setPositiveButton("返回", new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int which) {
- if(!condition){
- try {
- field = dialog.getClass().getSuperclass().getDeclaredField("mShowing");
- field.setAccessible(true);
- field.set(dialog,false);
- dialog.dismiss();
- } catch (SecurityException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (NoSuchFieldException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IllegalArgumentException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IllegalAccessException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- else {
- try {
- field = dialog.getClass().getSuperclass().getDeclaredField("mShowing");
- field.setAccessible(true);
- field.set(dialog,true);
- dialog.dismiss();
- } catch (SecurityException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (NoSuchFieldException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IllegalArgumentException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IllegalAccessException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
- });
这样,在else中将dialog的属性改回来,这样就OK啦!
发表评论
-
xUtils简介
2014-11-25 10:04 845xUtils 包含了很多实用的android工具。 xU ... -
直接拿来用!最火的Android开源项目
2014-07-25 11:01 701转 http://www.admin10000.com/d ... -
Android APK反编译详解(附图)
2014-03-28 10:56 820http://blog.csdn.net/ithomer/ar ... -
小米人
2014-02-17 17:23 686http://www.xiaomiren.net/ -
android开发之gallery 兑现滚动一张且短距离滑动实现滚动
2013-07-02 15:28 661http://www.myexception.cn/andro ... -
TextView显示插入的图片
2013-07-01 11:29 700http://orgcent.com/android-text ... -
TextView使用SpannableString设置复合文本
2013-07-01 11:29 646http://orgcent.com/android-text ... -
转:::Android TextView文字横向自动滚动(跑马灯)
2013-06-17 11:45 1513TextView实现文字滚动需要以下几个要点: 1.文字长度长 ... -
相片滤镜开源
2013-04-27 15:01 736https://github.com/daizhenjun/I ... -
android图片特效处理之模糊效果
2013-04-27 14:57 829http://blog.csdn.net/sjf0115/ar ... -
android图片处理方法(不断收集中)
2013-04-27 14:57 559http://gundumw100.iteye.com/blo ... -
Android, WindowsPhone7, IOS ,vc2010平台40多套图片滤镜开源
2013-04-27 14:56 665http://www.cnblogs.com/daizhj/a ... -
移动云存储平台
2013-04-25 16:13 905http://bmob.cn 关于Bmob 对于很多 ... -
android ExpandableListView简单应用及listview模拟ExpandableListView
2013-02-28 11:45 693http://blog.csdn.net/jj120522/a ... -
android_App集成支付宝
2013-02-28 11:43 789http://www.cnblogs.com/qianxude ... -
Android Pull Refresh View 插件
2012-12-01 12:43 847Android Pull Refresh View htt ... -
Android-TelephoneManager(转载)
2012-10-09 22:08 1347好文章齐分享。原文地址:http://blog.si ... -
android 开源 listview separato
2012-08-27 22:51 665http://code.google.com/p/androi ... -
fragment开源项目 学习
2012-08-13 12:02 929https://github.com/tisa007/Andr ... -
Fragment学习
2012-08-13 11:53 669http://www.eoeandroid.com/threa ...
相关推荐
F7Dialog.min.js ①设置DIV ;"> ;">X 加载中。。。</h2> ②开:Dialog({id:'showBlockDiv', lock:true}); ③关:Dialog.close("showBlockDiv");
bootstrap的dialog.js、bootstrap的dialog.js、bootstrap的dialog.js
jQuery.dialog.js插件实现漂亮的轻量级对话框效果,多种样式jQuery网页弹出对话框美化特效。
jquery.dialog.js 是jquery 最经典的弹出框插件,简单易用,亲测可用,附案例代码
js Dialog 最新版 绝对强大 js Dialog 兼容主流浏览器ff ie6/ie7/ie8 /opera ..
dialog.js 前端JavaScript,简易的弹窗插件 用于弹出自定义的弹窗,内部对于常见的滚动穿透,输入法遮挡输入框都有相应的处理。 精简小巧,压缩后仅有5k.
项目通用Dialog.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
jquery.modaldialog.1.0.0.zip_JQuery模式窗体例子
虽然项目未结项就转交了出去,但开始对JQuery产生了好感并爱不释手,于是决定将此项目正式更名为JQueryDialog。 本次更新将代码完全基于了JQuery框架,并应用了命名空间,让JS看起来有那么一点OO的感觉,同时修改了...
一个计算器Dialog..zip,Android计算器对话框
//修改最后一个窗口让其在覆盖层上显示 var dialogs = $("div.dialog").not("#dialogProxy"); if (dialogs.length > 1) { $(dialogs[dialogs.length - 2]).css("zIndex", 1000); } else { $("#...
art.dialog相关的js文件,导入即可使用,内含四个js文件,artDialog.js,iframeTools.js,以及他们的压缩版本(生成环境使用).
jquery的插件,实现用javascript实现alert,prompt,confirm的效果。
仿IOSDialog
里面是经过修改的jquery.ui.dialog.js(版本jQuery UI Dialog 1.8.12),添加了parentElement: 'body',详情查看http://forum.jquery.com/topic/dialog-will-move-its-div-tag-to-body
自定义构建者dialog.rar
Android实现Windows风格的Dialog.rar
Native Platform Dialog.unitypackage 没有积分的同学可联系v skode250
QT的dialog.ui文件
自定义Dialog...............................................................................