在Android实际开发中,我们可能常常需要弹出一个Dialog,让用户输入一些数据,而对用户的输入数据还需要进行一些比如不能为空的验证。但是在正常情况下,用户点击Dialog中的按钮后窗口会随即关闭,用户可能看不到你的错误提示,这样会显得很不友好。那有没有一种解决办法,可以让用户输入出错时单击按钮,继续留在页面而不是关闭本dialog呢?今天在工作中刚好碰到了这个问题,下面介绍一下我的解法办法。
首先看一个截图:
稍微解释一下需求,点击图中的“自定义”按钮弹出添加自定义零件的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();
}
分享到:
相关推荐
实现主窗口的“delete_event”事件处理函数,该事件在用户点击窗口的关闭按钮时发生,要求窗口的关闭按钮被点击时,显示一个对话框,该对话框中含一条提示语句“您确定要退出程序吗?”,另含“是”和“否”两个按钮...
主界面点击按钮,弹出一个Dialog窗口,在这个窗口的lineEdit中输入内容,点击确认按钮,窗口关闭,同时将输入的内容传入在主界面的LineEdit控件中。
当我点击确定按钮,也就是 AlertDialog 里的 PositiveButton 的时候,我们需要判断用户是输入是否符合我们的预期,如果不符合通常提示用户重写输入,且不关闭当前的对话框,但上图中点击按钮后会自动的关闭窗口。...
xButton:是否显示窗口右上角的X关闭按钮参数值:默认true(显示,如果titleBar参数为false,此参数无效),false(不显示)。 btnBar:是否显示按钮栏参数值:默认true(显示),false(不显示)。 cancelBtn:是否...
接着点击右边的“Edit Code”按钮,在其中中加入(在CDialog::OnInitDialog()那句之后,在return TRUE那句之前): m_Spin1.SetRange(1,6); m_Text1=1; m_Spin1.SetPos(1); 其中CSpinButtonCtrl::SetRange()...
# pyside2无边框窗口可拖动拉伸边框缩放调节窗口大小 1. 1. 去除系统自带边框,自定义美观...3. 最小化、最大化、关闭按钮; 4. 双击标题栏最大化/还原窗口; 5. 最大化状态下拖动窗口还原; 6. 拉伸边框调节窗口大小。
一个浮动的窗口,包含标题和内容两部分。可以移动,调整大小,以及关闭图标'×'。如果内容长度超过了对话框内容区域的显示,则会自动出现滚动...除此之外,还有一些常用的选项,如:添加底部按钮栏、模式窗口屏蔽层等。
$.unfunkyUI // 关闭模态窗口 $.alert //警告提示对话框 $.confirm //确认和取消对话框 $.fn.block //块模态 $.fn.unblock//解除块模态 调用示例: $.blockUI({ url:"1.html",//弹出窗口显示的内容,使用...
CancelEvent:点击取消按钮或点击关闭按钮后执行的函数,默认为关闭本Dialog。 ShowButtonRow:是否不显示按钮栏,值为布尔型(true|false),默认值为false,当定义了OKEvent或调用了addButton时自动设为true。 ...
种方法实现了信号和槽函数的关联,第一个按钮我们直接在设计器中实现其关 联;第二个按钮我们自己写了槽函数语句,其实图形的设计与直接写代码效果是 一样的。 这个程序里我们实现了两类窗口打开的方式,一个是自身...
可在关闭窗口时,回调主页面按钮。要求jquery。 效果演示 首先,演示主窗口两个按钮作用。然后,演示关闭弹出窗口时,调用主窗口的两个按钮。 主要代码(时间仓促,没加注释,不过代码很简单,就是创建几个元素拼在...
15. 如何使窗口不可见? 41 16. 如何使窗口始终在最前方? 41 17、如何创建一个字回绕的CEditView 42 18、通用控件的显示窗口 42 19、移动窗口 42 20、重置窗口的大小 42 21、如何单击除了窗口标题栏以外的区域使窗口...
效果图:演示: 官方演示 本地演示 特点 独特: 窗口移动时标题栏反光效果 窗口按钮:最小化,减少,最大化和关闭 双击窗口标题栏最大化,缩小 活动窗口突出显示 更改窗口大小(resize) 鼠标拖拽窗口 N多个配置选项 ...
点击页面中的按钮,会从窗口的右侧自右向左以动画的方式出现一个弹层。 当点击弹层上关闭按钮的时候,弹层又会自右向左的移出窗口可视区域,以动画的效果消失。 示例代码中给出的弹层是满屏的,大家可根据自己的需要...
15. 如何使窗口不可见? 41 16. 如何使窗口始终在最前方? 41 17、如何创建一个字回绕的CEditView 42 18、通用控件的显示窗口 42 19、移动窗口 42 20、重置窗口的大小 42 21、如何单击除了窗口标题栏以外的区域使窗口...
应用程序的关闭 .................................................................................................................................... 19 框架窗口 ...........................................
它的消息容器甚至能够根据宽度让文本居中或居左对齐——这一切全是XHTML+CSS原生实现。 完善的接口 它的接口完善,可以轻易与外部程序配合使用。如异步写入消息、控制位置、尺寸、显示与隐藏、关闭等。 细致的体验 ...
•当升级一个老项目时候发现在chrome中window.showModelDialog()不能用了,原来是在 chrome 37版本以后chrome正式废弃... 首先是判断子窗口关闭,因为项目是在子窗口关闭(确定按钮)的时候向父页面传递值的。
React组件库具有经典Windows外观的无...请注意,此组件在很大程度上依赖于鼠标事件,因此在不使用鼠标指针的环境中,它可能无法按预期工作。安装npm install --save react-win32dialog用法import React from ' react '
在用户关闭模态对话框之前,主窗口和其他窗口将无法响应用户输入。 以下是如何创建和使用模态对话框的基本步骤: 1. **创建`QDialog`对象:** ```cpp QDialog *dialog = new QDialog(parent); ``` 这里,`...