点击Dialog中的按钮不关闭窗口的实现方法

在Android实际开发中,我们可能常常需要弹出一个Dialog,让用户输入一些数据,而对用户的输入数据还需要进行一些比如不能为空的验证。但是在正常情况下,用户点击Dialog中的按钮后窗口会随即关闭,用户可能看不到你的错误提示,这样会显得很不友好。那有没有一种解决办法,可以让用户输入出错时单击按钮,继续留在页面而不是关闭本dialog呢?今天在工作中刚好碰到了这个问题,下面介绍一下我的解法办法。

首先看一个截图:

device

稍微解释一下需求,点击图中的“自定义”按钮弹出添加自定义零件的AlertDialog,该AlertDialog中的零件名称和单价是必填的,当用户没有填零件名称或单价时会给出提示而该AlertDialog不关闭。

看了一下Dialog的源代码,它有一个mShowing成员变量(private boolean mShowing = false;),当点击dialog上的按钮时会先判断mShowing的值,如果为true表示窗口正打开,就将其关闭,反之亦反。所以,我们可以通过手动设置mShowing的值来达到目的。

如上图,我会在点击“保存”按钮时进行用户输入验证,于是我在“保存”按钮的onClick事件中加入下面的代码就可以了:

if(ljmc==null || ljmc.equals("")){

	diaCustomName.setError("自定义零件名称不能为空!");
	//进行以下设置将不能关闭dialog
	try {
		Field field = dialog.getClass().getSuperclass().getDeclaredField("mShowing");
		field.setAccessible(true);
		field.set(dialog, false);
	} catch (Exception e) {
		e.printStackTrace();
	}
}

 

前面说了,mShowing是Dialog类的一个成员变量,在上面的方法中改变之后会影响别的按钮,如现在点击“取消”按钮将不能关闭对话框,解决办法在“取消”的onClick事件中再改变mShowing的值,如下:

try {
	Field field = dialog.getClass().getSuperclass().getDeclaredField("mShowing");
	field.setAccessible(true);
	field.set(dialog, true);
} catch (Exception e) {
	e.printStackTrace();
} 
AlertDialog 点击确认按钮自动取消dialog 一、问题导入 目前实现一个功能,点击确认按钮跳转到下一个界面添加数据,添加成功后返回后AlertDialog自动取消了,现在想让dialog要取消,这个需求查了很多别的博客也分析了源码。。。 下面是刚开始写的代码,点击确认按钮自动会取消这个dialog: AlertDialog.Builder builder = new AlertDialog.Builder(LoginActivit... 阅读详情

相关推荐

PyQt5主窗口点击按钮弹出子窗口对话框

首先在Qt Designer中创建一个主窗口和一个对话框子窗口,如下图所示: 设计完成后,转换成两个py文件,对于两个分开的文件实现窗口的调用,我看了一些资料,基本都是新建一个文件然后实现显示主窗口以及调用子窗口是我想要的,所以在下面给出我的实现方法,就在主窗口一个文件中实现。 首先在主窗口文件中导入子窗口的文件,以及创建一个子窗口类初始化窗口,代码如下: from ChildWindow...

weixin_43350361的博客 1万+

Qt界面设计控件-QDialogButtonBox实用总结

此外,我们还可以通过几个简单的步骤对按钮的样式进行修改,以满足同的设计需求。在Qt中,QDialogButtonBox是一种常见的用于管理对话框中按钮的控件。它可以让我们快速、方便地添加多个标准按钮,并自动设置好同的按钮布局,是简化开发的重要工具之一。以上代码实现了一个带有“确定(Ok)”和“取消(Cancel)”两个按钮的对话框,并为这两个按钮分别连接了被点击时的槽函数,以实现对话框的关闭。综上所述,QDialogButtonBox是一个非常实用的控件,能够为我们的界面设计带来很大的便利。

CoderHH的博客 452

ElementUI+Vue 解决在使用el-dialog时,点击el-dialog外的其他区域会导致该对话框关闭

需求描述 今天,在做Element+Vue项目时遇到一个需求:甲方要求在Dialog打开状态下,点击Dialog以外的区域会导致该Dialog关闭;正确的状态应该是只有在点击关闭按钮,或者是Dialog内的其他操作性按钮才能使得Dialog的状态变为关闭。 弹窗关闭后还显示一层遮罩层,设置append-to-body即可 问题分析 之所以会产生这种问题,是因为elementUi在...

weixin_41697323的博客 5433

点击确认按钮关闭diaog,必须手动设置关闭dialog

dialog点击按钮之后,都会关闭dialog需要,有时我们需求需要满足某种条件之后才能关闭,就可以用如下写法实现: Step 1 :activity_main.xml布局如下: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/a

weixin_44619313的博客 2053

项目经理三句话,让卑微小王为公司力敲18w行代码--Qt Dialog Button特性分析

QWidget的focus policy和Qdialog的default button的解释

jemnde的博客 587

Android Dialog点击按钮关闭,控制窗口的显示和关闭

今天做项目的时候遇到一个

zh5640923的专栏 5788

解决Dialog模态弹出点击遮罩层窗口自动关闭

Dialog模态弹出点击遮罩层弹出窗口会消失 如果我们希望自动消失,而是在点击弹出窗口关闭按钮时才消失,需要设置下Dialog组件的“close-on-click-modal ”属性,默认为true,改为false即可。官方文档解释: <el-dialog :title=“提示” :visible.sync=“dialogVisible” @close=“closeDialog” :close-on-click-modal=“false”> ...

wd728的博客 2798

Android悬浮带关闭按钮Dialog实现.zip

本文还有配套的精品资源,点击获取 简介:在Android开发中,实现启动项目时显示带有关闭按钮的悬浮Dialog是常用用户交互方式,本压缩包提供该功能的源码实现。要创建这样的Dialog,需要定义布局,自定义Dialog类,处理按钮点击事件,申请必要的权限,添加动画效果,处理DialogFragment生命周期,并适配多种屏幕尺寸。 1. Android Dial...

weixin_42561464的博客 1366

点击dialog按钮关闭dialog

/**      * Android中的弹出框在被点击时, 无论点击哪个按钮都会关闭窗口。      * 但是有的情况下我们需要立即关闭窗口。下面的情况是弹出框中要求用户输入文件名,      *  并在点击确定时检查文件名的合法性, 合法则提示用户重新输入, 弹出框要保持在界面上      *  使用反射      */     DialogInterface.OnClickL

kankankankan2222的专栏 2120

MFC实现点击按钮弹出独立窗口关闭后销毁主窗口

首先建立一个主窗口界面IDD_TESTPOPWINDOW_DIALOG建立一个弹出窗口IDD_DIALOG1如何实现点击窗口按钮

m0_60352504的博客 1885

JAVAFX Dialog窗口关闭问题 not closeing

javafx写一个小工具,使用dialog弹出窗口时碰到关闭的情况, 查了下文档,文档 这样说的, 如果需要按上图中所未关闭窗口,必须要么添加至少一个按钮,要么添加多个按钮,其中一个按钮的类型ButtonData.CANCEL_CLOSE --------------------------------直接看对应代码------------------------------ 1、至少一个按钮 Dialog<ButtonType> dialog = new Dialog&l.

sunpx3的博客 3018

Java Swing 自定义Dialog确认对话框、窗口关闭时弹出对话框询问

Java Swing 自定义Dialog确认对话框Java Swing 自定义Dialog Java Swing 自定义Dialog 需求:当点击JFrame窗口关闭按钮时,弹框询问是否确定关闭窗口,如果是则关闭程序,否就让弹框消失什么也做(使用Dialog)。 分析:虽然Java提供了 JOptionPane 类,用来创建标准对话框,但是此处需要使用Dialog来提供弹框。所以可以通过扩展 JDialog 类创建自定义的对话框。 实现如下: package com.tianjh.dialog; im

tianjh1129的博客 6万+

Android Dialog点击按钮关闭对话框

在Android实际开发中,我们可能常常需要弹出一个Dialog,让用户输入一些数据,而对用户的输入数据还需要进行一些比如能为空的验证。但是在正常情况下,用户点击Dialog中的按钮窗口会随即关闭,用户可能看到你的错误提示,这样会显得很友好。那有没有一种解决办法,可以让用户输入出错时单击按钮,继续留在页面而关闭dialog呢?今天在做demo中刚好碰到了这个问题,下面介绍一下我的解法办

jiapeng的专栏 5224

fastadmin自定义按钮btn-dialog关闭弹窗后刷新父窗体 刷新 关闭 按钮 callback 自定义

自定义按钮 页面A {field: ‘operate’, title: __(‘Operate’), table: table, width:‘30%’,buttons:[ //width是规定这列的宽度 { name: ‘编辑详情’, //按钮的名称 text: ‘编辑详情’,//显示的字 icon: ‘fa fa-image’,//按钮的图标 classname: ‘btn btn-xs bt...

qq_40971915的博客 1万+

Android Dialog组件实现与外部点击事件处理

Android开发中,Dialog是一个非常有用的组件,它允许开发者以弹出窗口的形式向用户展示信息。这种模式通常用于在用户执行关键任务时,要求他们做出决定或提供额外信息,而会打断当前界面的用户体验。在Android应用开发中,Dialog是一种浮动于应用窗口之上的窗口,用于展示临时信息、收集用户输入或提供交互功能。Dialog可以拥有自己的布局和按钮,它会占据整个屏幕,用户可以在其上进行交互而离开当前的上下文环境。

weixin_33506815的博客 1180

android dialog 关闭按钮,AlertDialog 点击按钮关闭的处理办法

AlertDialog点击按钮关闭的处理办法newAlertDialog.Builder(this).setPositiveButton(newString("确定"),newDialogInterface.OnClickListener(){@OverridepublicvoidonClick(DialogInterfacedialog,int...

weixin_39540934的博客 220

vue 点击取消按钮关闭页面_vue 点击按钮弹窗,点击关闭按钮关闭弹窗。

点击弹窗按钮关闭new Vue({el: '',data: {show:false,},mounted: function () {},methods: {//点击弹窗btnfc:function () {var that =this;that.show =true;},//点击关闭hiddenShow:function () {var that = this;that.cshow = false...

weixin_30017913的博客 6771

重写MFC窗口上的关闭按钮事件(SDI, MDI, Dialog)

This piece of code demonstrate how to override WM_CLOSE event. 点击窗口关闭按钮,触发相关事件! 有时候,在MFC程序退出之前,我们通常会提醒用户做一些事情,比如说保存窗口数据等。 解决方法: 在主窗口的cpp文件里: #include "afxpriv.h" BEGIN_MESSAGE_...

4531
上一篇: android
下一篇: 一个体现Java接口及工厂模式优点的例子
iteye_10032
博客等级 码龄8年 0粉丝 22原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值