精华内容
下载资源
问答
  • 关闭对话框的正确
    2021-06-02 14:30:04

    本文实例讲述了Android实现点击AlertDialog上按钮时不关闭对话框的方法。分享给大家供大家参考。具体如下:

    开发过程中,有时候会有这样的需求:

    点击某个按钮之后显示一个对话框,对话框上面有一个输入框,并且有“确认”和“取消”两个按钮。当用户点击确认按钮时,需要对输入框的内容进行判断。如果内容为空则不关闭对话框,并toast提示。

    使用AlertDialog.Builder创建对话框时,可以使用builder.setNegativeButton和builder.setPositiveButton两个方法设置取消按钮和确认按钮的点击事件。然而问题在于,只要用户点击了确认按钮或者取消按钮,系统就会自动将对话框关闭。

    解决此问题的方法是:

    (1)使用builder.setPositiveButton设置确认按钮的文字,但是不添加监听。即:

    复制代码 代码如下:

    builder.setPositiveButton(R.string.main_ok, null);

    (2)得到AlertDialog对象:

    复制代码 代码如下:

    AlertDialog alertDialog = builder.create();

    alertDialog.show();

    (3)获取到对话框上的确认按钮,然后对该按钮添加普通的View.OnClickListener。在用户输入正确的时候,手动调用alertDialog.dismiss()关闭对话框。

    复制代码 代码如下:

    alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(new View.OnClickListener() {

    @Override

    public void onClick(View v) {

    String cardNum = cardNumET.getText().toString().trim();

    if (cardNum.length() == 0) {

    Utility.showToast(mActivity, "请输入编号");

    return;

    }

    //发送

    sendProfile(cardNum);

    alertDialog.dismiss();

    }

    });

    问题完美解决。

    希望本文所述对大家的Android程序设计有所帮助。

    更多相关内容
  • 如果你想显示一个模态对话框,你需要先将所有者窗口禁用,然后启用模态对话框,当关闭一个模态对话框时,则要确保严格按照相反的流程来进行。 为什么要按照这样的流程呢? 如果你没有按照正确的顺序启用或禁用窗口...

    调用顺序很重要

    如果你想显示一个模态对话框,你需要先将所有者窗口禁用,然后启用模态对话框,当关闭一个模态对话框时,则要确保严格按照相反的流程来进行。

    为什么要按照这样的流程呢?

    如果你没有按照正确的顺序启用或禁用窗口,则窗口的输入焦点可能会被搞乱。
    如果关闭了一个模态对话框,你可能想要这样做:
    > 关闭并销毁模态对话框
    > 重新启用所有者窗口

    但是,如果你按照上面的顺序操作的话,你会发现:所有者窗口将不会像正常的那样在前景激活。它会随机地激活一些其他的窗口。可以显式的调用激活函数来解决这个问题,但是,这种做法会带来窗口的闪烁,并且窗口的Z序也乱了。

    到底发生了什么?

    当你销毁一个模态对话框时,你是在销毁一个前景激活的窗口。Windows窗口管理器需要找到下一个被激活的窗口。它首先会尝试激活模态对话框的所有者窗口,但是此时所有者窗口被禁用了。
    这个时候,Windows窗口管理器会跳过所有者窗口并寻找系统中其他未被激活的窗口。这就是导致出现上述现象的原因。

    那么,应该怎么做?

    正确的销毁模态对话框的流程如下:
    > 启用模态对话框所有者窗口
    > 销毁模态对话框

    这次,当我们的模态对话框被销毁时,Windows窗口管理器发现所有者窗口是已启用状态,所以它就会将输入焦点设置到所有者窗口并将它激活为前景窗口。

    总结

    按照上面提到的顺序,可以避免诸如界面闪烁,输入焦点混乱的问题。虽然是一个小知识点,但是也值得一试。

    最后

    Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。
    本文来自:《The correct order for disabling and enabling windows》

    关闭模态对话框的正确顺序

     

    展开全文
  • 原理:在对话框出现的时候给上一个遮罩层,遮罩层可以设置为透明,点击遮罩层对话框关闭 <!-- 按钮部分要放在遮罩层外面,因为有些网页会设置点击按钮的时候对话框关闭 --> <button class="button">...

    原理:在对话框出现的时候给上一个遮罩层,遮罩层可以设置为透明,点击遮罩层对话框关闭

        <!-- 按钮部分要放在遮罩层外面,因为有些网页会设置点击按钮的时候对话框关闭 -->
        <button class="button">点击退出</button>
    
        <div class="bigBox">
            <!-- cover是整个遮罩层,遮罩层和对话框在同一个大盒子中,都是绝对定位 -->
            <div class="cover"></div>
            <div class="box">我是传说中的对话框</div>
        </div>

    下面是css部分,其实就是简单设置了一下定位和以及对话框,遮罩层的颜色,注意,遮罩层一般是透明色,我们可以看一下有些网页,当你登录框出现的时候,整个页面上的其他地方实际上不好操作的,这实际上是因为登录框自带的遮罩层

      <style>
            * {
                padding: 0;
                margin: 0;
            }
    
            .button {
                height: 5vh;
                width: 10vw;
            }
    
            .bigBox {
                position: relative;
            }
    
            .cover {
                position: absolute;
                /* 这个95实际上就是100-button的5 */
                display: none;
                height: 95vh;
                width: 100vw;
                background-color: black;
            }
    
            .box {
                position: absolute;
                display: none;
                background-color: blue;
                width: 200px;
                height: 100px;
            }
        </style>

    接下来是页面逻辑部分,在点击遮罩层的时候,整个bigbox关闭

    <script>
            let button = document.querySelector(".button")
            let box = document.querySelector(".box")
            let cover = document.querySelector(".cover")
            button.addEventListener('click', function () {
                box.style.display = 'block'
                cover.style.display = 'block'
            })
            // 点击遮罩层,box盒子实现消失
            cover.addEventListener("click", function (e) {
                if (e.target = cover) {
                    box.style.display = 'none'
                    cover.style.display = 'none'
                }
            })
        </script>

    其实好久之前就想到了,但是一直没写,学习就是这样子的,很多时候写多了,以前困扰你的难题就会迎刃而解,相比之间的一种写法,这种写法是不是顺眼了很多。

    展开全文
  • 对话框的创建

    2019-04-23 15:13:25
    对话框的创建 1.分类:Qt对话框分为两种: 第一种是模态对话框,只能对对话框操作,不能对其它界面进行操作,利用的是dialog.exec();阻塞状态 QDialog dialog(this); dialog.exec(); 第二种是非模态对话框,可以对...

    对话框的分类

    1.分类:Qt对话框分为两种:

    第一种是模态对话框,只能对对话框操作,不能对其它界面进行操作,利用的是dialog.exec();阻塞状态
    
    QDialog  dialog(this);
    dialog.exec();
    

    第二种是非模态对话框,可以对别的窗口进行操作。

    QDialog *dialog2 = new QDialog(this);
    dialog2->show();
    //设置窗口不被关闭
    dialog2->setAttribute(Qt::WA_DeleteOnClose)
    

    QMessageBox 标准对话框

    1.属性:弹出是所有对话框都是模态对话框

    2.QMessageBox的静态成员函数

    参数1 父窗口 参数2 标题 参数3 提示内容 参数4 按键类型 参数5 默认关联回车按键
    (1).错误提示critical

    connect(ui->actionMessageBox,&QAction::triggered,[=](){
            //1.弹出错误对话框
            QMessageBox::critical(this,"错误","critical");
            });
    

    错误提示
    (2).警告提示warning

    connect(ui->actionMessageBox,&QAction::triggered,[=](){
            //2.警告对话框
            QMessageBox::warning(this,"警告","FBI warning!");
            });
    

    警告提示
    (3).信息提示information

    connect(ui->actionMessageBox,&QAction::triggered,[=](){
            //3.弹出信息对话框
            QMessageBox::information(this,"信息","information");
            });
    

    信息提示
    (4).提问提示question

    connect(ui->actionMessageBox,&QAction::triggered,[=](){
    //4.弹出提问对话框
            //参数1   父窗口     参数2     窗口标题    参数3     提示信息    参数4     按键类型
            if(QMessageBox::Save == QMessageBox::question(this,"提问","question",QMessageBox::Save | QMessageBox::Cancel))
            {
                qDebug()<< "点击的是保存";
            }
            else
            {
                qDebug()<<"点击的是取消";
            }
            });
    

    提问提示

    其他对话框

    1.文件对话框

    参数1 父窗口 参数2 标题 参数3 默认打开路径 参数4 过滤后缀名

    QString filename = QFileDialog::getOpenFileName(this,"打开文件","E:/","Doc(*.doc *.docx)" );
            qDebug() <<"打开的文件名是:" <<filename.toUtf8().data();
    

    2.颜色对话框

    QColor color = QColorDialog::getColor(QColor(255,0,0));
    		//打印颜色值
            qDebug() << color.red() << color.green() << color.blue();
    

    3.字体对话框

    connect(ui->actionFont,&QAction::triggered,[=](){
             bool ok;//首先定义bool值ok
             QFont font = QFontDialog::getFont(&ok,QFont("宋体",20));
             qDebug() << "字体:"<< font.family().toUtf8().data() << "字号" <<font.weight() << "是否加粗" << font.bold();
         });
    
    展开全文
  • qt对话框关闭事件

    2021-01-14 07:45:55
    (创建类对象): QColorDialog dialog(Qt::red,this); dialog.setOption(QColorDialog::... QColor color = dialog.currentColor......QT 对话框添加背景图片的方法 1. QPalette 的方法 #include...findDlg-...
  • vc中关闭对话框dialog

    千次阅读 2016-08-18 13:33:57
    对话框默认用的两个按钮的ID分别是IDOK和IDCANCEL,这两个都是在winuser.h 中预定义的系统标准控件ID。  对于标准ID,你不重载时MFC会自动调用父类的相应处理函数。  比如IDOK映射到CDialog::OnOK()函数,...
  • 在WPF应用程序中,我想实现以下...问题是,只要显示模态对话框,当用户关闭对话框时,主窗口就会在后台消失(假设有其他应用程序的窗口打开).我使用Window.Owner和Window.Show()/ Window.ShowDialog()的方式有什么不对,它...
  • Qt对话框与窗口的关闭和隐藏

    千次阅读 2021-02-06 19:13:40
    关闭:是指窗口不可见,但窗口有可能是被删除了,也有可能是被隐藏了,这要视情况而定。  窗口被删除时,会同时删除其子对象,而隐藏则不会。 2、关闭窗口与终止程序 一个(应用)程序通常拥有多个窗口,关闭(或...
  • 一、显示对话框 1.显示模式对话框: CDialogDemo dlg; dlg.DoModal(); 2.显示非模式对话框: CDialogDemo *dlg=new CDialogDemo(this); dlg->Create(IDD_GENERAL_CONTROL);...二、关闭对话框: 1.CDialog::
  • VC对话框关闭按钮 调用函数的过程 对话框默认用的两个按钮的ID分别是IDOK和IDCANCEL,这两个都是在winuser.h 中预定义的系统标准控件ID。 对于标准ID,你不重载时MFC会自动调用父类的相应处理函数。 比如IDOK映射...
  • 开发过程中,有时候会有这样的需求: ...如果内容为空则不关闭对话框,并toast提示。 使用AlertDialog.Builder创建对话框时,可以使用builder.setNegativeButton和builder.setPositiveButton两个方...
  • ,结果用户输入空值时对话框还是会关闭正确做法如下: 先设置自定义对话框的属性: autoClose: false 然后当用户输入正确的值时 $.closeModal(); 关闭对话框。 转载于:https://www.cnblogs.com...
  • 关闭Widget窗口。如果Widget窗口被关闭,则返回true;否则返回false。 首先,它向Widget窗口发送一个QCloseEvent。如果Widget窗口接受关闭事件,它将被隐藏。如果忽略该事件,则什么也不会发生。QWidget::closeEvent...
  • 这里的问题:当我点击确定按钮,也就是 AlertDialog 里的 PositiveButton 的时候,我们需要判断用户是输入是否符合我们的预期,如果不符合通常提示用户重写输入,且不关闭当前的对话框,但上图中点击按钮后会自动的...
  • 1、非模态对话框和父窗口共享当前线程的消息循环 2、模态对话框新建一个新的消息循环,并由当前消息循环派发消息,而父窗口。模态对话框屏蔽了用户对它父窗口的操作,但是不是在消息循环里面屏蔽,所以给父窗口发送...
  • 前几天发现自己的程序中使用非模态对话框,Debug版本有警告提示如下: Warning: calling DestroyWindow in CWnd::~CWnd OnDestroy or PostNcDestroy in derived class will not be called 由于是Warnning,就没有...
  • 通过AlertDialog 弹出对话框进行密码修改,密码正确之后才关闭对话框 public void modifyPwd(View v) { final SharedPreferences sharedPreferences = getBaseContext().getSharedPreferences(GlobalVar.SHARE_...
  • Java Swing对话框

    2022-09-01 11:22:56
    消息对话框 使用JOptionPane中的方法public static void showMessageDialog(Component parentComponent,String message,String titles, int messageType)1参数parentComponent为null,对话框会在屏幕的正前方显示,...
  • 模式对话框(Modal Dialog) 是指对话框打开后, 用户在关闭对话框前无法对父窗口进行任何鼠标和键盘操作. 以下代码实现了一个模式对话框类(Dialog)
  • 对话框和控件编程

    2022-05-11 14:28:05
    对话框和控件编程
  • public class Example9_16 { public static void main... win.setTitle("带消息对话框的窗口"); win.setBounds(80,90,350,300); } } package 例题; import java.awt.event.*; import java.awt.*; imp
  • 对话框数据传递

    2022-07-26 14:49:31
    对话框的出现用于完成一个简单的或者是短期的任务。对话框与主窗口之间的数据交互相当重要。本节将讲解如何在对话框和主窗口之间进行数据交互。按照前文的讲解,对话框分为模态和非模态两种。我们也将以这两种为例,...
  • 这个 cmd 窗口先不要关闭, 打开另一个窗口 登陆MySQL 或直接点开 MySQL CommandLine Client 输入正确的密码。即可。       方法二:找出运行(win+R),在这个DOS窗体中,cd 到MySQL Server 5.5 的...
  • Windows --- 模态对话框

    2022-06-04 19:46:54
    模态对话框:点击打开后,如果不把下面这个窗口关掉,不能操作它后面的窗口阻塞非模态对话框:DialogBoxA macro (winuser.h) - Win32 apps | Microsoft DocsDialogBoxA macro (winuser.h) - Win32 apps | Microsoft ...
  • 对话框对话框是提示用户作出决定或输入额外信息的小窗口。 对话框不会填充屏幕,通常用于需要用户采取行动才能继续执行的模式事件。对话框设计这里写图片描述Dialog 类是对话框的基类,但您应该避免直接实例化 ...
  • 当我点击 Dialog里面取消按钮,关闭对话框后,再打开后,内容就消失了,这让我很难受。 再我再三检查后,发现不管打开几次Dialog ,只会在第一次打开的时候发送请求,点击取消按钮后,数据会重置,但是再打开的时候...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 69,207
精华内容 27,682
热门标签
关键字:

关闭对话框的正确