android开发之AlertDialog点击按钮之后不消失 -电脑资料

电脑资料 时间:2019-01-01 我要投稿
【www.unjs.com - 电脑资料】

    最近有这样一个需求,我需要用户在一个弹出框里输入密码来验证,验证成功当然好说,但是如果验证失败则需要把alertdialog的标题改为“密码错误,请重新输入”,并且这个alertdialog还不能消失,要等待用户继续输入,

android开发之AlertDialog点击按钮之后不消失

    那么怎么实现点击确定或者取消按钮之后dialog不消失呢?

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

    没错,就是利用Java中的反射机制来实现的,

电脑资料

android开发之AlertDialog点击按钮之后不消失》(https://www.unjs.com)。

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

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

    就是这样。

最新文章