- 浏览: 39539 次
- 性别:
- 来自: 北京
文章分类
最新评论
Dialog的dismiss和cancel
AlertDialog使用很方便,但是有一个问题就是:dismiss方法和cancel方法到底有什么不同?
今天有时间,看了看源码(其实源码并不是全都那么深奥的!~~)。
AlertDialog继承与Dialog,现在各位看看结构图:
[attachment=1826]
然后在Dialog类中找到了dismiss和cancel方法的实现。重要看dismiss的源码:
Java代码
public void cancel() {
if (mCancelMessage != null) {
// Obtain a new message so this dialog can be re-used
Message.obtain(mCancelMessage).sendToTarget();
}
dismiss();
}
看明白了吧! 在cancel方法中调用了dismiss方法。 但是现在还有一个问题就是:mCancelMessage是什么?
private Message mCancelMessage; // 这是源码中的声明
然后再来看源码:
Java代码
public void setOnCancelListener(final OnCancelListener listener) {
if (listener != null) {
mCancelMessage = mListenersHandler.obtainMessage(CANCEL, listener);
} else {
mCancelMessage = null;
}
}
public void setCancelMessage(final Message msg) {
mCancelMessage = msg;
}
现在问题清楚了,就是如果你在创建AlertDialog的时候调用了setOnCancelListener 这个mCancelMessage变量有作用,否则dismiss和cancel等同。
另外在看源代码的时候发现,Dialog还有一个方法叫做setCanceledOnTouchOutside,貌似挺有用的。
AlertDialog使用很方便,但是有一个问题就是:dismiss方法和cancel方法到底有什么不同?
今天有时间,看了看源码(其实源码并不是全都那么深奥的!~~)。
AlertDialog继承与Dialog,现在各位看看结构图:
[attachment=1826]
然后在Dialog类中找到了dismiss和cancel方法的实现。重要看dismiss的源码:
Java代码
public void cancel() {
if (mCancelMessage != null) {
// Obtain a new message so this dialog can be re-used
Message.obtain(mCancelMessage).sendToTarget();
}
dismiss();
}
看明白了吧! 在cancel方法中调用了dismiss方法。 但是现在还有一个问题就是:mCancelMessage是什么?
private Message mCancelMessage; // 这是源码中的声明
然后再来看源码:
Java代码
public void setOnCancelListener(final OnCancelListener listener) {
if (listener != null) {
mCancelMessage = mListenersHandler.obtainMessage(CANCEL, listener);
} else {
mCancelMessage = null;
}
}
public void setCancelMessage(final Message msg) {
mCancelMessage = msg;
}
现在问题清楚了,就是如果你在创建AlertDialog的时候调用了setOnCancelListener 这个mCancelMessage变量有作用,否则dismiss和cancel等同。
另外在看源代码的时候发现,Dialog还有一个方法叫做setCanceledOnTouchOutside,貌似挺有用的。
发表评论
-
设置内存卡资源图片
2013-03-12 10:11 478String imageDir = Environment. ... -
android字体过长渐变效果
2013-01-30 15:59 662使用 android:singleLine="t ... -
自定义之checkbox
2013-01-08 09:16 613android中自定义checkbox大小和图片 (转) ... -
Android中Activity,View,Window之间的关系(转)
2012-12-03 09:11 11241.首先来看Activity中的attach()方法,在调用o ... -
android应用程序适配在不同的手机上(转)
2012-12-03 09:15 486如何将一个应用程序适 ... -
android 堆栈 清理 (转)
2012-12-03 09:16 663启动任务 当一个activity ... -
Android权限共享UID(转)
2012-12-03 09:16 543共享UID 安装在设备中 ... -
ViewPager+TabHost 实现选项卡页面间滑动(转)
2012-12-04 09:19 914转自http://flycatdeng.iteye.com/b ... -
android扫描商品条形码
2012-12-04 09:19 993(转自http://marshal.easymorse.com ... -
基于Android平台的NFC技术的应用实现 (转)
2012-12-04 09:20 1394转自http://1679554191.iteye.com/b ... -
Android API包名及包的功能的中文介绍
2012-11-30 09:38 971android 包含应用平台和在定义应用程序所用到and ... -
Android 自动解锁 KeyguardManager(键盘管理器)(转)
2012-11-30 09:39 931写一个Activity启动该服务即可,用一个线程开启服务, ... -
Android之Service与IntentService的比较 .
2012-11-30 09:41 676转自http://blog.csdn.net/zhf19890 ... -
AlarmManager的使用
2012-11-30 09:42 664AlarmManager的作用文档中的解释是:在特定的时刻为 ... -
ActivityGroup之生命周期
2012-12-04 09:20 781Activity的生命周期已经 ... -
ActivityGroup之切换activity
2012-12-04 09:20 660前言 在一个主界面中做Activity切换一般都会用T ... -
Android SurviceView的触控和轨迹球事件 .
2012-12-05 14:10 1054SurfaceView 的触控和轨迹球事件 1,改开始什 ... -
home键屏蔽
2012-12-05 14:11 6151. 在activity中加上这段代码(重写onAttache ... -
彻底删除某个APK的方法
2012-12-05 14:11 10591. 连接ADB, 执行adb remount 2. 执行a ... -
android常用命令
2012-12-05 14:11 844首先配置好环境变量,有两种方法 1,在path里面配置 sdk ...
相关推荐
主要介绍了dialog dismiss时键盘不消失的问题浅析及两种解决方法,非常不错,具有参考借鉴价值,需要的朋友参考下
代码基于dialog写的,进场出场动画,基本需求设置
Dialog实现3D翻转效果,资源里包含两种旋转效果
Dialog实现3D翻转效果,资源里包含两种旋转效果。 修改Z轴,有效改变旋转效果。
各种android弹出dialog效果以及各种dialog样式各种android弹出dialog效果以及各种dialog样式各种android弹出dialog效果以及各种dialog样式各种android弹出dialog效果以及各种dialog样式各种android弹出dialog效果...
熟悉dialog和fragment的运用,
android 自定义dialog样式 custom dialog style 转
Dialog对话框,包括选择项Dialog,进度条Dialog,下载进度条Dialog
有些朋友碰到过需要自定义dialog的情况,比如随着安卓应用要求的需要,改变dialog的边框和背景,本安卓源码例子即给你介绍了此作用
PopWindow和Dialog 的详解 和具体使用 及具体示例
整理了常用的dialog 包括:single Choice Dialog Multiple choice Dialog Input Dialog Progress Dialog
自定义对话框LoadingDialog和Toast,可以添加Gif动画的Dialog,喜欢的自行下载!
基于Dialog的工程,可以实现在按照角度旋转(利用扇形绘制),左边旋转
使用纯javascript实现dialog
vb 调用commondialog保存文件方法和批量Ascii码转换
dialog在Android开发中是非常常用的,但是系统自带的样式,有限,所以我们需要自定义dialog,定义出我们喜欢的样式。
dialog导致的spinner弹出框回到home界面时,发生异常。主要由于在Activity中没有先关闭dialog。。。
dialog 弹出窗和底部弹出窗的实现和动画效果,中间弹出和底部弹出
安卓Service中弹Dialog
dialog为低功耗BLE的代表,此文档是开发DIALOG方案的指导文档