Android中利用反射机制来控制AlertDialog窗口不被关闭
16lz
2021-01-26
在项目中我们经常会遇到需要在AlertDialog做一些业务选项,此时如果我们要控制选项没有被选中,就不让AlertDialog关闭,并提示用户。在Android中,因为系统封装了AlertDialog的修改,没有对外提供修改接口,所以我们不能直接控制关闭。此时我们可以利用反射机制,获取dialog中控制关闭的变量,修改该值即可完美控制AlertDialog显示和关闭了。
在AlertDialog的单击事件
new DialogInterface.OnClickListener(){}
中,我们只需要加入如下代码,就成功了!
try
{
Field field = dialog.getClass()
.getSuperclass().getDeclaredField(
"mShowing" );
field.setAccessible( true );
// 将mShowing变量设为false,表示对话框已关闭
field.set(dialog, false );
dialog.dismiss();
}
catch (Exception e)
{
}
,如果在OK按钮中加入了此代码,那么点击Cancle也不能关闭了,此时可以把上段代码放到Cancle的单击事件中,主需要将field.set(dialog, false );中的false更新为true,就完美的解决了此问题!
更多相关文章
- Android(安卓)Switch控件修改样式
- Android平板电脑远程控制PC机教程
- android 自定义dialog 实例
- 监听android屏幕亮、暗、锁和关闭系统动作
- Android(安卓)aapt实现资源分区(补充携程aapt源码)
- Android(安卓)6.0 悬浮窗默认关闭解决方案
- 在小米手机上,修改APP的launcher应用图标不生效的解决方案
- android双屏显示的一些修改与尝试
- android修改TextView中部分文字的颜色来实现高亮效果