阻止对话框的正常关闭(AlertDialog)

Android中点击AlertDialog的按钮后不退出对话框的方法 然而,有时候我们希望点击按钮后对话框保持打开状态,以便执行其他操作或显示其他内容。首先,我们需要创建一个AlertDialog,并设置其按钮的点击监听器。在监听器中,我们可以根据需要执行相应的操作,并决定是否关闭对话框。通过以上的代码,我们可以实现点击AlertDialog的按钮后不退出对话框的功能。根据实际需要,在按钮的点击监听器中进行相应的操作,然后决定是否关闭对话框。在上面的代码中,我们创建了一个AlertDialog.Builder对象,并设置了对话框的标题和消息内容。方法中执行我们需要的操作。 阅读详情


对于正常的情况下,如果我们点击OK或者Cancle的话,对话框都会关闭,这是应为它的内部都调用了dismiss();

但是现在需求是如果我们输入的用户名或者密码不正确,我们的对话框不关闭,直到我们输入的用户名和密码完全正确,才关闭。

这时我们就需要欺骗系统了。要想查看里面的实现原理,自己去看源码去,其实很简单的。下面只是作为我的笔记,以后忘了可以回来查看的。

	/**
	 * 假设对话框已经关闭,欺骗系统,以保持输入窗口
	 * @param mDialogLongInterface	点击对话框按钮事件传进来的mDialogInterface参数
	 */
	public static void keepDialog(DialogInterface mDialogLongInterface){
		try {
			Field field=mDialogLongInterface.getClass().getSuperclass().getDeclaredField("mShowing");
			field.setAccessible(true);//将mShowing设置为false表示对话框已关闭
			field.set(mDialogLongInterface,false);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * 销毁对话框
	 * @param mDialogInterface
	 */
	public static void closeDialog(DialogInterface mDialogInterface){
		try {
			Field field=mDialogInterface.getClass().getSuperclass().getDeclaredField("mShowing");
			field.setAccessible(true);
			field.set(mDialogInterface, true);
			mDialogInterface.dismiss();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

在确定按钮的onClick点击事件的方法中添加keepDialog(***);

//如果输入的信息正确直接调用closeDialog(***);

在取消按钮的onClick点击事件的方法中添加closeDialog(***);

这样就噢啦。

大概代码如下:(就按照如下的方式去写就行了)

new AlertDialog.Builder(MainActivity.this)
	.setTitle(r.getString(“提示”)
	.setMessage(“Message”)
	.setPositiveButton(“确定”),new DialogInterface.OnClickListener() {
		public void onClick(DialogInterface dialog, int which) {
        		if("输入正确"){
				closeDialog(dialog);
			}else{
				keepDialog(dialog);
			} 
        	}
  	}).show();








Android AlertDialog对话框类型集合教程 本文还有配套的精品资源,点击获取 简介: AlertDialog 是Android UI设计的关键组件,用于显示重要信息或要求用户决策。本文全面介绍了 AlertDialog 的不同类型,包括普通对话框、单选对话框、多选对话框、自定义视图对话框、进度对话框、列表对话框、警示对话框和输入对话框,并提供了丰富的示例代码。通过 AlertDia... 阅读详情

相关推荐

Element Alert警告的具体使用方法

主要介绍了Element Alert警告的具体使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

AlertDialog中默认按键不关闭对话框功能的实现

可以通过AlertDialog.Builder来操作AlertDialog。通过AlertDialog.Builder类的setNagtiveButton()、setNeutralButton()和setPositiveButton()方法设置对话框的左、中和右键,如图1所示。 图1 AlertDialog类的三个按键 可以通过以上三个方法设置按键显示的内容和点击响应。但是通过这种方法设

hou09tian的博客 2246

从软体机器人到鞋垫分析:Abaqus超弹性材料(Ogden模型)仿真配置全流程

本文详细介绍了Abaqus中Ogden模型在超弹性材料仿真中的应用全流程,涵盖从实验数据导入、参数拟合到模型构建与求解优化的关键步骤。特别针对鞋垫分析等生物力学场景,提供了单元选择、接触设置和并行计算等实用技巧,帮助工程师实现高精度仿真分析。

weixin_42525385的博客 399

028_Alert警告

1. Alert警告 1.1. Alert警告用于页面中展示重要的提示信息。 1.2. Attributes 参数 说明 类型 可选值 默认值 title 标题 string 无 无 type 主题 string s

aihiao的专栏 1209

Ubuntu22.04下3分钟搞定GitHub加速:SwitchHosts+小鱼工具保姆级配置指南

本文提供Ubuntu22.04下快速解决GitHub下载超时问题的保姆级教程,通过SwitchHosts图形化工具和小鱼一键换源工具实现高效加速。详细步骤包括环境准备、工具安装配置及验证方法,帮助开发者轻松优化GitHub访问速度,提升工作效率。

weixin_29258297的博客 562

sid图像数据_遥感影像数据

影像数据基本概念影像数据是由卫星或飞机上的成像系统获得的影像,多为遥感影像数据。影像数据的每个像元都有一个值,表示传感器探测到像素对应地面面积上目标物的电磁辐射强度,也叫亮度值、灰度值。SuperMap支持的影像数据格式有:*.img、*.tif、*.tiff、*.bmp、*.jpg、*.png、*.gif、*.raw、*.sid等。计算机以二进制记录数据,所以其量化的等级以二进制来划分,即2n。...

weixin_39534395的博客 1626

实现 AlertDialog 点击确定按钮不关闭

当我们在使用AlertDialog时,无论点击“确定”(PositiveButton)还是“取消”(NegativeButton),对话框都会消失,这在某些情景下是不合理的。例如下面这种情况:AlertDialog 里面有必填或必选项,当用户没有输入或选择时就点击了确定,这时对话框不应该消失的,而是应该提示用户完成填写或选择后才能进行下一步。关于 AlertDialog 实现上面的效果,百度了一下多

niuzhucedenglu的博客 3276

simulink调用C代码函数-C Caller模块

simulink中如何调用写好的C代码函数?使用C Caller模块调用C代码。

weixin_40531919的博客 5668

AlertDialog.Builder 设置点击不关闭弹框

AlertDialog.Builder 设置点击不关闭弹框

minusn的博客 1219

全志V3S嵌入式驱动开发(驱动开发准备)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 之前的文章都是教大家怎么搭建环境、看原理图、编译内核和根文件系统、做镜像,直到现在才进入驱动开发的主题。毕竟整个专栏的目的,还是希望大家能够学会驱动外部硬件。驱动好硬件,分成硬件和软件两个部分,硬件的部分比较好理解,就是看相关的信号有没有对接上即可,但是软件对接、甚至于怎么写软件,大家好像接触的比较少,所以这个时候,就可以简单讨论一下,怎么样才能写驱动代码。 1、了解外部驱动芯

嵌入式-老费,一个分享专业嵌入式知识的blog 2024

SPI 总线信号完整性与时序一致性测试

SPI总线测试的核心目标是验证其电气与时序行为是否满足芯片规格要求,确保通信可靠性

硬核科技 328

安卓_利用Java反射技术阻止通过按钮关闭对话框

利用Java反射技术阻止通过按钮关闭对话框

wayne566的博客 516

ESP8266开发之旅 基础篇① 走进ESP8266的世界

    欢迎大家来到ESP8266的世界,从现在开始,笔者将带领大家慢慢揭开ESP8266神秘的面纱。 1. 简介     从笔者的角度来说,ESP8266这个词可以理解为ESP8266EX芯片(当然,后面也有可能出现了其他芯片,这里首推ESP8266EX)以及依赖ESP8266EX芯片开发的系列模组的简称。     ESP8266EX是由乐鑫信息科技公司(Espressif)出品的一款应用于物联...

单片机菜鸟哥的博客 15万+

Android让AlertDialog点击确定不会消失

转载出处:http://www.w2bc.com/Article/15219 在Android的alertDialog中,使用自带的button,点击确定或者取消,都会关闭对话框。但我们有时候希望比如点击确定的时候发现他有没填的选项,我们提示他填写完整,这个时候不关闭对话框。当然解决办法,有很多。比如用个activity做dialog。或者自定义view.使用自己定义的butto

cj_to_niu 439

[毕设项目-大模型微调]现代文翻译文言文【基于LLaMA3.1-8B微调】

教你基于LLaMA3.1-8B微调如何做到现代文翻译文言文

逐梦苍穹的博客 2296

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

android关闭dialog,Android中阻止AlertDialog关闭实例代码

Android如何关闭AlertDialog.Builder对话框呢?AlertDialog.Builder对话框没有类似finish()或者dismiss()这样的方法。但是它的父类AlertDialog有dismiss方法,而且AlertDialog.Builder在.show()的时候会得到一个AlertDialog对象,我们就可以用dismiss方法将该Builder关闭。AlertDia...

weixin_36352025的博客 869

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Android 点击 AlertDialog 的确定按钮对话框不关闭的方法

一、问题描述 最近在做项目需要在弹出 含 EditText 让用户输入的对话框,在按确定按钮时需要对输入的内容进行校验,但出现的问题是一按确定按钮就对话框就关闭,现在的问题是要让对话框在按确定按钮时对 EditText 的内容进行校验,如果校验不通过就不关闭,校验通过才关闭。 private AppCompatButton mBtnShowDialog; @Override pro...

cekiasoo的博客 7019

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

阻止AlertDialog关闭

AlertDialogHelper.java文件 package com.appCode.XXXXXX; import android.content.DialogInterface; import android.util.Log; import java.lang.reflect.Field; /** * 用于设置AlertDialog点击PositiveButton、NegativeButton、NeutralButton等按钮阻止关闭功能 */ public class AlertD.

坤仔的专栏 3718

AlertDialog通过反射机制阻止Dialog关闭

有时候不想关闭AlertDialog,这是用Field。

zhuyouleixuexi的专栏 1008

阻止alertDialog自动关闭

android开发中, AlertDialog使用相当频繁,基本是必须使用的。   它的使用方法非常简单: alertDialog = newAlertDialog.Builder(mContext) .setTitle("提示") .setMessage("你确定要删除该附件吗?")

dalancon的专栏 8143

让对话框关闭或不关闭的代码

/***让当前对话框关闭*/private void closeDialog(DialogInterface dialig){     //通过反射机制得到当前AlertDialog的类模板对象 Class clz_alertDialog=dialog.getClass(); //再次通过反射机制得到当前对象的父类模板对象 Class clz_dialog=clz_alertDialog.getS...

whycmpx的博客 2720

java alertdialog_Android系统怎么利用利用Java反射技术阻止通过按钮关闭对话框(AlertDialog)...

展开全部众所周知,AlertDialog类用于显示对话框。32313133353236313431303231363533e58685e5aeb931333332626135关于AlertDialog的基本用法在这里就不详细介绍了,网上有很多,读者可以自己搜索。那么本文要介绍的是如何随心所欲地控制AlertDialog。现在我们来看看第一个需求:如果某个应用需要弹出一个对话框。当单击“确定“按钮时...

weixin_32126555的博客 214

AlertDialog 利用反射使得点击按钮使对话框不关闭

由于系统通过调用dismiss来关闭对话框,那么我们可以在dismiss方法上做点文章。在系统调用dismiss方法时会首先判断对话框是否已经关闭,如果对话框已经关闭了,就会退出dismiss方法而不再继续关闭对话框了。因此,我们可以欺骗一下系统,当调用dismiss方法时我们可以让系统以为对...

choulixiu1105的博客 109

AlertDialog.Builder setPositiveButton 点击时不关闭dialog

AlertDialog.Builder setPositiveButton  与 setNegativeButton 点击时都会自动关闭 dialog,但是 文本控制 不想其关闭 两种方法 ①: LayoutInflater  inflater = LayoutInflater.from(mActivity); View view = inflater.inflate(R.layout.

u013151574的博客 1万+

android按任意建关闭对话框,Android: 创建一个AlertDialog对话框,必须按确定或取消按钮才能关闭对话框,禁止按[返回键]或[搜索键]关闭...

AlertDialog.Builder builder = new Builder(this);builder.create().show();这样显示出来的对话框,当用户按返回键或搜索键时,这个对话框也能关闭。怎样才能实现一个类似在windows系统上的对话框,必须点对话框上的按钮后,才能关闭这个对话框。下面是具体代码:AlertDialog.Builder builder = new Buil...

weixin_36411999的博客 549

Android中 Alertdialog对话框点击消失?

在开发的时候遇到一个问题,就是一触摸对话框边缘外部,对话框会自动消失。这个问题很纠结啊,查找了一下发现从Android 4.0开始,AlertDialog有了变化,就是在触摸对话框边缘外部,对话框会自动消失,查了源码,找到解决办法:          研究其父类时候发现,可以设置这么一条属性,在AlertDialog.Builder.create()之后才能调用这两个方法  

ysh06201418的专栏 2956
上一篇: Android APK混淆编译出现的问题
下一篇: Webview让加载进来的页面自适应手机屏幕分辨率居中显示
Halifax ‎
博客等级 码龄14年 4272粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Halifax ‎

交个朋友

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值