AlertDialog dismiss 和 cancel方法的区别

简介: Dialog类中找到了dismiss和cancel方法的实现。 看dismiss的源码:   public void cancel() { if (mCancelMessage != null) { // Obtai...

 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变量有作用,那么cancel 比dismiss要多做一些任务,否则dismiss和cancel等同

 

 

 

目录
相关文章
|
前端开发
View#invalidate是如何调用当前View#onDraw方法的?
View#invalidate是如何调用当前View#onDraw方法的?
Dialog显示引起的问题 Activity has leaked window DecorView@5704632[] that was originally added here
Dialog显示引起的问题 Activity has leaked window DecorView@5704632[] that was originally added here
1109 0
Fragment Or DialogFragment Can not perform this action after onSaveInstanceState
转载自Fragment Or DialogFragment Can not perform this action after onSaveInstanceState 表现 可会造成app崩溃掉,具体日志如下: 异常如下: java.
2718 0
|
XML Android开发 数据格式
startActivityForResult()和onSaveInstanceState()用法
该方法作用是:A Activity跳转到B Activity携带返回数据 MainActivity的xml布局内代码: MainActivity,class文件内部代码 package com.
1128 0
|
XML Android开发 数据格式
Activity finish 后 onDestroy ()并不会立马执行
只看标题就好 所以两个Activity在用到生命周期的时候,不要再onDestroy中做,控制不了
1018 0
自定义textview invalidate ()不调用ondraw()可能原因
1.控件大小为0,需要重写onMeasure () 2.onDraw()重写的不是protected 我记得重写已有控件不需要重写测量方法,可能是我记错版本了,有空了在研究研究
1121 0
Fragment调用Activity
  public void onClick(View arg0) {                                Intent intent = new Intent();                                intent.
846 0