zoukankan      html  css  js  c++  java
  • android开发之AlertDialog点击按钮之后不消失

    最近有这样一个需求,我需要用户在一个弹出框里输入密码来验证,验证成功当然好说,但是如果验证失败则需要把alertdialog的标题改为“密码错误,请重新输入”,并且这个alertdialog还不能消失,要等待用户继续输入。
    那么怎么实现点击确定或者取消按钮之后dialog不消失呢?

    // 不关闭dialog
                                                        try {
                                                            // 不关闭
                                                            Field field = dialog
                                                                    .getClass()
                                                                    .getSuperclass()
                                                                    .getDeclaredField(
                                                                            "mShowing");
                                                            field.setAccessible(true);
                                                            field.set(dialog, false);
                                                        } catch (Exception e) {
                                                            e.printStackTrace();
                                                        }

    没错,就是利用Java中的反射机制来实现的。
    但是这样又出现一个问题,假如我第一次输入密码错误,第二次我不想再输入了,我想退出来,这个时候你会发现无论点击什么按钮都无法让dialog消失,那么怎么实现在点击取消按钮时dialog消失呢?

    // 关闭dialog
                                                    try {
                                                        // 关闭
                                                        Field field = dialog
                                                                .getClass()
                                                                .getSuperclass()
                                                                .getDeclaredField(
                                                                        "mShowing");
                                                        field.setAccessible(true);
                                                        field.set(dialog, true);
                                                    } catch (Exception e) {
                                                        e.printStackTrace();
                                                    }

    就是这样。

  • 相关阅读:
    nodejs 核心模块crypto
    es6新特性学习
    nodejs 常用全局包
    ionic+angular+cordova 安卓环境搭建
    谷歌浏览器调试保存到文件
    Linux命令
    Linux中用户管理详解(上)-Linux学习日记
    liunx下忘记root密码的解决方法
    cvCanny的参数
    VC运行时库(/MD、/MT等)
  • 原文地址:https://www.cnblogs.com/qitian1/p/6461786.html
Copyright © 2011-2022 走看看