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,貌似挺有用的。
分享到:
相关推荐
主要介绍了dialog dismiss时键盘不消失的问题浅析及两种解决方法,非常不错,具有参考借鉴价值,需要的朋友参考下
代码基于dialog写的,进场出场动画,基本需求设置
各种android弹出dialog效果以及各种dialog样式各种android弹出dialog效果以及各种dialog样式各种android弹出dialog效果以及各种dialog样式各种android弹出dialog效果以及各种dialog样式各种android弹出dialog效果...
熟悉dialog和fragment的运用,
Dialog对话框,包括选择项Dialog,进度条Dialog,下载进度条Dialog
有些朋友碰到过需要自定义dialog的情况,比如随着安卓应用要求的需要,改变dialog的边框和背景,本安卓源码例子即给你介绍了此作用
整理了常用的dialog 包括:single Choice Dialog Multiple choice Dialog Input Dialog Progress Dialog
自定义对话框LoadingDialog和Toast,可以添加Gif动画的Dialog,喜欢的自行下载!
PopWindow和Dialog 的详解 和具体使用 及具体示例
使用纯javascript实现dialog
dialog在Android开发中是非常常用的,但是系统自带的样式,有限,所以我们需要自定义dialog,定义出我们喜欢的样式。
dialog导致的spinner弹出框回到home界面时,发生异常。主要由于在Activity中没有先关闭dialog。。。
dialog 弹出窗和底部弹出窗的实现和动画效果,中间弹出和底部弹出
dialog为低功耗BLE的代表,此文档是开发DIALOG方案的指导文档
安卓Service中弹Dialog
自定义对话框样式,以及对话框的加载动画,告别Android默认丑陋的对话框!
(1)Popupwindow在显示之前一定要设置宽高,Dialog无此限制。 (2)Popupwindow默认不会响应物理键盘的back,除非显示设置了popup.setFocusable(true);而在点击back的时候,Dialog会消失。 (3)Popupwindow不会...
去掉 android dialog 白色边框
dialog中镶嵌gridview 和listview 有两个工程