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等同

 

 

 

目录
相关文章
|
8月前
activity中加载fragment的控件 在fragment 中调用activity中的控件
activity中加载fragment的控件 在fragment 中调用activity中的控件
69 0
Flutter | 子widget调用父widget方法报 Tried calling: call()
在学Flutter状态管理时,需要子Widget调用父Widget,报如下错误:
126 0
Flutter | 子widget调用父widget方法报 Tried calling: call()
|
Android开发 消息中间件 调度
Toast在子线程调用的问题
Toast我们平时经常使用,但是你是否了解在子线程中要如何使用Toast呢? Toast的一般姿势 平时我们经常在主线程中直接使用Toast,代码看起来会像下面这样 Toast.
928 0
Activity与Fragment的onActivityResult细节
在Fragment中跳转到另一个Activity,返回时是调用Activity的onActivityResult呢?还是调用Fragment的onActivityResult呢? 我当然知道,只不过我再碰到时忘记了,然后每次忘记都要从新去网上找,不如做个Test然后记录下来。
1291 0
|
前端开发 Java Android开发
自定义控件View之onMeasure调用时机源码分析
终于建了一个自己个人小站:https://huangtianyu.gitee.io,以后优先更新小站博客,欢迎进站,O(∩_∩)O~~ 先上测试代码: MainActivity.java import android.
1241 0
|
XML Android开发 数据格式
Fragment调用Activity
  public void onClick(View arg0) {                                Intent intent = new Intent();                                intent.
851 0
Activity生命周期方法调用finish后的不同表现
今天宿舍一个哥们出去面试遇到了这个面试题:"在activity oncreate()调用finish()"生命周期是怎么样的? 我赶紧写了些demo,发现确实很有趣: package com.example.
1390 0