阻止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 AlertDialogHelper {private static final String LogTag = "AlertDialogHelper";// 获取Dialog的mShowing成员static public Field get_mShowing_field(DialogInterface dialog) {Field fieldmShowing = null;try {//Log.e(LogTag, "名称:" + dialog.getClass().getSuperclass().getSimpleName() + " " + dialog.getClass().getSuperclass().getSuperclass().getSimpleName());//通过反射获取Dialog中的私有属性mShowingif (dialog.getClass().getSuperclass().getSimpleName().compareTo("Dialog") == 0) {fieldmShowing = dialog.getClass().getSuperclass().getDeclaredField("mShowing");} else if (dialog.getClass().getSuperclass().getSuperclass().getSimpleName().compareTo("Dialog") == 0) {fieldmShowing = dialog.getClass().getSuperclass().getSuperclass().getDeclaredField("mShowing");}else{Log.e(LogTag, "Dialog基类找不到");}} catch (Exception ex) {ex.printStackTrace();}return fieldmShowing;}// 设置mShowing=false忽略关闭请求static public void ignoreClose(DialogInterface dialog) {Field fieldmShowing = get_mShowing_field(dialog);if (null != fieldmShowing) {fieldmShowing.setAccessible(true); //设置该属性可以访问try {fieldmShowing.set(dialog, false); // 阻止关闭请求} catch (IllegalAccessException e) {e.printStackTrace();}}}// 恢复关闭请求static public void recoverClose(DialogInterface dialog) {Field fieldmShowing = get_mShowing_field(dialog);if (null != fieldmShowing) {fieldmShowing.setAccessible(true); //设置该属性可以访问try {fieldmShowing.set(dialog, true); // 恢复关闭请求} catch (IllegalAccessException e) {e.printStackTrace();}}}
}
使用方法:
View layoutEdit = View.inflate(getContext(), R.layout.multi_line_edit, null);
final EditText editLease = layoutEdit.findViewById(R.id.multiLineEdit);
final AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
builder.setTitle("输入XXXXXX");
builder.setView(layoutEdit);
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {AlertDialogHelper.recoverClose(dialog);String strCode = editLease.getText().toString().trim();if (strCode.isEmpty()) {AlertDialogHelper.ignoreClose(dialog);return;}}
}
);
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {AlertDialogHelper.recoverClose(dialog);}
}
);
//AlertDialog dlg = builder.create();
//dlg.show();
AlertDialog dlg = builder.show();
阻止AlertDialog关闭相关推荐
- .NET/C# 阻止屏幕关闭,阻止系统进入睡眠状态
在 Windows 系统中,一段时间不操作键盘和鼠标,屏幕便会关闭,系统会进入睡眠状态.但有些程序(比如游戏.视频和演示文稿)在运行过程中应该阻止屏幕关闭,否则屏幕总是关闭,会导致体验会非常糟糕. 本 ...
- 阻止计算机系统自动更新,W10电脑系统如何阻止并关闭自动更新
W10电脑系统如何阻止并关闭自动更新?很多用户升级W10 1709版本之后,发现电脑系统又自动下载一些电脑系统更新了,这让用户很是郁闷,其实想要关闭自动更新很容易,下面请随小编一起操作! W10 17 ...
- 监控软件之 阻止系统屏保 阻止系统关闭显示器 阻止系统待机
目前大部分监控软件都是基于DDRAW来显示的,在屏保/系统关闭显示器/待机之后,画面会消失. 可用下面的代码阻止屏保/系统关闭显示器/待机 //记录是否启用屏幕保护 BOOL bScreenSaver ...
- C#阻止计算机关闭显示器和待机
一.测试 测试环境:Win10 备注: 1.管理员和非管理员权限测试都正常: 2.执行阻止关闭显示器和待机后,退出程序会自动恢复: 3.使用Win+L切换到锁屏界面时,同样生效: 二.代码 代码来源: ...
- beforeunload中阻止提示关闭_Win10电脑中如何禁用或启用Defender的 PUA (PUP) 保护-系统城...
在win10系统中,新增了一个安全性选项,该选项将使用户能够启用Windows Defender秘密功能,该功能可以检测并阻止已知的PUA(潜在有害应用程序)的安装.该功能默认情况下处于关闭状态的,那 ...
- electron 点击关闭_electron阻止应用关闭
下载Quick start项目 这里为了便于演示,我们直接从GitHub上下载Quick start项目 git clone https://github.com/electron/electron- ...
- 阻止浏览器关闭 区分刷新和关闭 自试IE可用
window.onbeforeunload = onbeforeunload_handler; function onbeforeunload_handler(){ if(event.clientX& ...
- php中new运算符的作用,C++_C++编程中new运算符的使用学习教程,new运算符用作从自由存储为 typ - phpStudy...
C++编程中new运算符的使用学习教程 new运算符用作从自由存储为 type-name 的对象或对象数组分配内存,并将已适当分类的非零指针返回到对象. [::] new [placement] ne ...
- 电脑计算机无法关闭什么意思,笔记本电脑无法关闭是什么问题? (长按以关闭计算机以解决问题)...
接下来,我将教您一些方法来解决计算机无法关闭的问题 随着技术的发展,我们离不开用于工作和娱乐的计算机. 我们习惯于每天使用后关闭计算机. 但是今天出现了异常情况,并且计算机无法意外关闭. 接下来,让我 ...
最新文章
- 天籁数学——数列篇(1)
- VTK:BiDimensionalWidget二维小部件用法实战
- win2003服务器 虚拟主机安全配置
- python pca降维_机器学习的降维打击
- DDD~DDD从零起步架构说明
- Visual Studio二次安装时无法更改安装位置解决方案
- centos怎么查看用户和用户组
- flex +overflow在firefox与edge中不生效的问题
- 一组优秀的 for .NET Winform UI控件——DotNetMagic最新版本2.3,推荐使用
- 获取贴图及IES文件
- 极客空间-MySQL实战45天-第二天
- tensorflow gpu环境安装
- 在线PS照片处理工具 无需下载怎么编辑图片
- JS-underfined is not a function
- BERT知识点汇总(en cour...)
- java实现word(docx)在线编辑(word转html,html转word)——解读document.xml结构
- APP定制开发的优势
- 入门,前后端实现简单账号密码登录
- STM32-外部中断详解
- python:open()方法+循环语句 练习