最近有这样一个需求,我需要用户在一个弹出框里输入密码来验证,验证成功当然好说,但是如果验证失败则需要把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(); }
就是这样。