AlertDialog使用很方便,但是有一个问题就是:dismiss方法和cancel方法到底有什么不同?
今天有时间,看了看源码(其实源码并不是全都那么深奥的!~~)。
AlertDialog继承与Dialog,现在各位看看结构图:
然后在Dialog类中找到了dismiss和cancel方法的实现。重要看dismiss的源码:
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; // 这是源码中的声明
然后再来看源码:
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等同。 OK! 白白~~
- 大小: 24.1 KB
分享到:
相关推荐
掌握AlertDialog控件的使用方法;
1、从Activity的TextView中获取字符串设置到AlertDialog的TextView和EditText中 2、将AlertDialog的EditText中的值设置到Activity的TextView中 新手在自定义AlertDialog上的疑问笔者猜测主要有两个: 1、自定义的...
根据API中关于AlertDialog 的接收和使用方法,本demo把api中代码做了相应测试,简单、适合初学者。
alertDialog,android alertDialog大全
Android之AlertDialog源码
Android AlertDialog对话框 自定义实现遮罩层
https://blog.csdn.net/tnxlcn/article/details/82317490的工程文件打包
android自定义AlertDialog,例如支付页面,先弹出自定义AlertDialog询问是否愿意支付,确定则弹出另外一个自定义AlertDialog,选择支付方式,android自定义AlertDialog,android自定义AlertDialog,android自定义...
Android之简单的登录界面的实现、使用 AlertDialog和全局广播实现被强制下线功能、自定义一个带有清除按钮的EditText
android AlertDialog使用例程 一个在安卓平台上开发使用AlertDialog的例子 很实用很全哦
AlertDialog的各种用法,包含简单、复杂、列表、自定义、日期时间、进度条等的对话框
警告框AlertDialog,实现点击弹出警告框,适合初学者下载学习
android AlertDialog对话框的类型集合 ,比较全面的讲述了 AlertDialog 的 种类 , Demo 的综合性比较强 , Demo 可直接运行
主要为大家详细介绍了android AlertDialog多种使用方法,包括普通对话框、单选对话框、多选对话框等,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
android 使用alertdialog创建自定义对话框
比较漂亮的自定义AlertDialog。