对话框AlertDialog的dismiss和cancel区别

先上cancel方法源码和注解

  /**
     * Cancel the dialog.  This is essentially the same as calling {@link #dismiss()}, but it will
     * also call your {@link DialogInterface.OnCancelListener} (if registered).
     */
    public void cancel() {
        if (!mCanceled && mCancelMessage != null) {
            mCanceled = true;
            // Obtain a new message so this dialog can be re-used
            Message.obtain(mCancelMessage).sendToTarget();
        }
        dismiss();
    }

注解的大意:cancel对话框,这个在本质上基本和disimss一样。但是cancel会执行DialogInterface.OnCancelListener监听,前提是有注册过。

public void openDialog(View v){
        AlertDialog dialog ;
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("标题");
        builder.setMessage("dismiss和cancel的区别");
        builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.cancel();
            }
        });

        builder.setNegativeButton("取消",new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
            }
        });

        dialog = builder.create();
        dialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
            @Override
            public void onCancel(DialogInterface dialog) {
                Toast.makeText(MainActivity.this, "setOnCancelListener", Toast.LENGTH_SHORT).show();
            }
        });
        dialog.show();
    }

点击确定按钮后会执行DialogInterface.OnCancelListener();弹出Toast且关闭对话框。

对话框AlertDialog的dismiss和cancel区别

时间: 2024-08-04 04:51:28

对话框AlertDialog的dismiss和cancel区别的相关文章

【转】Android详细的对话框AlertDialog.Builder使用方法

Android详细的对话框AlertDialog.Builder使用方法 我们在平时做开发的时候,免不了会用到各种各样的对话框,相信有过其他平台开发经验的朋友都会知道,大部分的平台都只提供了几个最简单的实现,如果我们想实现自己特定需求的对话框,大家可能首先会想到,通过继承等方式,重写我们自己的对话框.当然,这也是不失为一个不错的解决方式,但是一般的情况却是这样,我们重写的对话框,也许只在一个特定的地方会用到,为了这一次的使用,而去创建一个新类,往往有点杀鸡用牛刀的感觉,甚至会对我们的程序增加不必

安卓弹出对话框——AlertDialog(二)

在Android中,启动一个对话框有三种方式: 1.定义一个新的activity,并将其主题设置为对话框风格 2.使用AlertDialog类,并且显示它 3.使用 Android的Dialog类的子类,并且显示它 现在学习AlertDialog.Builder创建各种形式的对话框. 首先,看看启动界面如下: 用土司来显示效果,因为多次用到,所以将其抽象为一个方法. [java] view plaincopy protected void showToast(String string) { T

安卓弹出对话框——Alertdialog(一)

首先看各种样式的对话框: 我们看到,Dialog有很多的子类实现,所以我们要定义一个对话框,使用其子类来实例化一个即可,而不要直接使用Dialog这个父类来构造. 二.AlertDialog 今天我们重点要来了解的就是AlertDialog对话框,我们看到,AlertDialog是Dialog的一个直接子类. 使用AlertDialog,我们可以显示一个标题,最多3个按钮操作,以及一组选择框或者是自己定义的弹出框. 这里借用android的官方文档提供的一个图来看看AlertDialog框的组成

【转】【Android】对话框 AlertDialog -- 不错不错

原文网址:http://blog.csdn.net/feng88724/article/details/6171450 本讲介绍一下Android基本组件:对话框AlertDialog. API: java.lang.Object    ? android.app.AlertDialog.Builder 使用AlertDialog.Builder创建对话框需要了解以下几个方法: setTitle :为对话框设置标题 setIcon :为对话框设置图标 setMessage:为对话框设置内容 se

Android中的对话框AlertDialog使用技巧合集-转载

Android中的对话框AlertDialog使用技巧合集 文章来自:http://blog.csdn.net/blue6626/article/details/6641105 今天我用自己写的一个Demo 和大家详细介绍一个Android中的对话框的使用技巧. 1.确定取消对话框 对话框中有2个按钮   通过调用 setPositiveButton 方法 和 setNegativeButton 方法 可以设置按钮的显示内容以及按钮的监听事件. 我们使用AlerDialog 创建对话框 view

Android对话框之dismiss和cancel和hide区别

在我们看来两者效果都是一样的,其实看下源码就知道cancel肯定会去调dismiss的,如果调用的cancel的话就可以监听DialogInterface.OnCancelListener. /** * Cancel the dialog. This is essentially the same as calling {@link #dismiss()}, but it will * also call your {@link DialogInterface.OnCancelListener}

Android 对话框 (AlertDialog)

Android 提供了 AlertDialog 类可通过其内部类 Builder 轻松创建对话框窗口,但是没法对这个对话框窗口进行定制,为了修改 AlertDialog 窗口显示的外观,解决的办法就是创建一个指定的 AlertDialog 和 AlertDialog.Builder 类. 定义外观 我们希望将上面默认的对话框外观修改为如下图所示的新对话框风格: 该对话框将支持下面特性: 可从资源或者字符串直接指定对话框标题 可从资源.字符串和自定义布局来设置对话框内容 可设置按钮和相应的事件处理

普通的对话框 AlertDialog

private void showSetPswDialog() { AlertDialog.Builder builder = new Builder(this); // 将设置密码对话框界面,搭建成布局,添加到dialog中显示 View view = View.inflate(this, R.layout.home_dialog_setpsw, null); // 初始化控件,进行功能实现 final EditText mPsw = (EditText) view.findViewById(

Android详细的对话框AlertDialog.Builder使用方法(转)

我们在平时做开发的时候,免不了会用到各种各样的对话框,相信有过其他平台开发经验的朋友都会知道,大部分的平台都只提供了几个最简单的实现,如果我们想实现自己特定需求的对话框,大家可能首先会想到,通过继承等方式,重写我们自己的对话框.当然,这也是不失为一个不错的解决方式,但是一般的情况却是这样,我们重写的对话框,也许只在一个特定的地方会用到,为了这一次的使用,而去创建一个新类,往往有点杀鸡用牛刀的感觉,甚至会对我们的程序增加不必要的复杂性,对于这种情形的对话框有没有更优雅的解决方案呢?     幸运的