当我们在用到Android alertDialog创建对话框 的时候,我们会遇到一个问题就是:我们添加的按钮不论是用setNegativeButton还是用setPositiveButton添加的按钮,点击的时候,都会关闭对话框,但是我们的一 些实际需求,就需要保留这个对话框不动,例如输入校验码,密码之类的校验问题,如果用户输入错误,而关闭后弹出对话框,就很别扭了。

        在网上找了一下,原来在源码中有一个boolean变量是控件对话框的关闭与否的mShowing变量,我们只需要利用反射改变这个变量就可以控制我们的对话框是不是关闭了。所以,我们可以通过手动设置mShowing的值来达到目的。


         不关闭对话框:

              try {

                     Field field = dialog.getClass().getSuperclass().getDeclaredField("mShowing");

                     field.setAccessible(true);

                     field.set(dialog, false);

              } catch (Exception e) {

                     e.printStackTrace();

              }


关闭对话框:

                try {

                     Field field = dialog.getClass().getSuperclass().getDeclaredField("mShowing");

                     field.setAccessible(true);

                     field.set(dialog, true);

              } catch (Exception e) {

                     e.printStackTrace();

              }



具体代码:

 

new AlertDialog.Builder(Bookstore.getInstance())

                     .setTitle(r.getString(“提示”)

                     .setMessage(“不能打开”)

                     .setPositiveButton(“确定”), new DialogInterface.OnClickListener() {

                         public void onClick(DialogInterface dialog, int which) {

                             try {//下面三句控制弹框的关闭

                                   Field field = dialog.getClass().getSuperclass().getDeclaredField("mShowing");

                                   field.setAccessible(true);

                                   field.set(dialog,true);//true表示要关闭

                                } catch (Exception e) {

                                   e.printStackTrace();

                                }

      

                            }

                     }).show();


更多相关文章

  1. Android的Activity一打开就出现讨嫌的软键盘,怎样将其关闭?
  2. 从实际问题中分析 Android中@id与@+id区别
  3. Android开发指南-用户界面-对话框
  4. 个人使用的Android(安卓)Studio快捷键(MAC版)
  5. apk在线升级
  6. React-native 问题汇总
  7. Android网络开启、关闭整理
  8. Facebook Fresco体验 (一)
  9. Android(安卓)自定义DialogProgress

随机推荐

  1. java/Android(安卓)error系列01: Value o
  2. Android中各种动画的使用
  3. 在Android上使用ZXing识别条码 二次开发
  4. androidの4.4版本沉浸式透明状态栏与导航
  5. Android布局编写示例【慢慢更新】
  6. Android应用开发——跑马灯效果
  7. 【Android】界面布局之TableLayout(表格
  8. Android(安卓)SDK: adb 常用命令的使用(无
  9. Android Window 9问9答
  10. Android Activity是如何启动的?Activity的