博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android_Dialog cancle 和dismiss 区别
阅读量:7198 次
发布时间:2019-06-29

本文共 1283 字,大约阅读时间需要 4 分钟。

AlertDialog使用很方便,但是有一个问题就是:dismiss方法和cancel方法到底有什么不同?

       AlertDialog继承与Dialog,现在各位看看结构图:

      然后在Dialog类中找到了dismiss和cancel方法的实现。重要看dismiss的源码:

Java代码  
  1. public void cancel() {  
  2.        if (mCancelMessage != null) {  
  3.              
  4.            // Obtain a new message so this dialog can be re-used  
  5.            Message.obtain(mCancelMessage).sendToTarget();  
  6.        }  
  7.        dismiss();  
  8.    }  

    看明白了吧! 在cancel方法中调用了dismiss方法。 但是现在还有一个问题就是:mCancelMessage是什么?

    private Message mCancelMessage; // 这是源码中的声明

    然后再来看源码:

Java代码  
  1. public void setOnCancelListener(final OnCancelListener listener) {  
  2.        if (listener != null) {  
  3.            mCancelMessage = mListenersHandler.obtainMessage(CANCEL, listener);  
  4.        } else {  
  5.            mCancelMessage = null;  
  6.        }  
  7.    }  
  8.   
  9. ublic void setCancelMessage(final Message msg) {  
  10.        mCancelMessage = msg;  
  11.    }  

   现在问题清楚了,就是如果你在创建AlertDialog的时候调用了setOnCancelListener 这个mCancelMessage变量有作用,否则dismiss和cancel等同。

Public void cancel ()

Since: 

Cancel the dialog. This is essentially the same as calling , but it will also call your (if registered).

取消对话框,基本上和调用dismiss效果一样。但是cancel同事也会调用注册的事件,如果注册了。

public void dismiss ()

Since: 

Dismiss this dialog, removing it from the screen. This method can be invoked safely from any thread. Note that you should not override this method to do cleanup when the dialog is dismissed, instead implement that in.

参考:http://blog.csdn.net/cpcpc/article/details/6774823

你可能感兴趣的文章
XMind中的“任务信息”视图
查看>>
OSChina 双十一乱弹 ——来自单身狗的哀鸣
查看>>
OSChina 周三乱弹 ——我们职业更好的名字:爱码士
查看>>
左边的项目管理器不见了
查看>>
android 获取唯一标识
查看>>
HTML5 - Server-Sent Events
查看>>
为MySQL授权
查看>>
用 Octave 对音频文件进行基本数学的信号处理
查看>>
看视频是好的学习方法
查看>>
Get last order or items of customer in magento
查看>>
centos7安装redis3.2.1
查看>>
聚合数据Android SDK 天气查询演示示例
查看>>
java冒泡排序法
查看>>
tomcat启停脚本高级版
查看>>
【Microsoft Edge中新的F12开发者工具】
查看>>
java基础第五天
查看>>
提取Fiddler抓包软件的抓到的数据
查看>>
Vsftpd 安全
查看>>
Android开发之下载服务器上的一张图片到本地java代码实现HttpURLConnection
查看>>
安全运维之:网络性能评估工具Iperf
查看>>