zoukankan      html  css  js  c++  java
  • 对话框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且关闭对话框。

  • 相关阅读:
    error: device not found
    RK3288 查看时钟树
    GPS数据包格式解析
    Android 操作文件系统失败: Read-only file system
    Ubuntu 14.04 配置安卓5.1编译环境
    升级 php composer 版本
    清理 laravel blade 模板缓存
    Laravel collection 报错 join(): Invalid arguments passed
    Laravel firstOrNew 与 firstOrCreate 的区别
    执行 crontab 的计划任务
  • 原文地址:https://www.cnblogs.com/datian/p/3895002.html
Copyright © 2011-2022 走看看