在项目中我们经常会遇到需要在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,就完美的解决了此问题!

更多相关文章

  1. Android(安卓)Switch控件修改样式
  2. Android平板电脑远程控制PC机教程
  3. android 自定义dialog 实例
  4. 监听android屏幕亮、暗、锁和关闭系统动作
  5. Android(安卓)aapt实现资源分区(补充携程aapt源码)
  6. Android(安卓)6.0 悬浮窗默认关闭解决方案
  7. 在小米手机上,修改APP的launcher应用图标不生效的解决方案
  8. android双屏显示的一些修改与尝试
  9. android修改TextView中部分文字的颜色来实现高亮效果

随机推荐

  1. Android(安卓)databinding RecycleView i
  2. UI控件--ImageView和ImageButton
  3. 我对android的第一印象
  4. Android给自定义按键添加广播和通过广播
  5. [Android Samples视频系列之ApiDemos]App
  6. 一个简单的Android圆形ProgressBar
  7. Android 常用开发工具类
  8. Android 保存文件路径
  9. Android中设置定时器
  10. Android长按弹出菜单