如何让AlertDialog点击确定按钮时不消失

使用场景:

在AlertDialog弹出框上不论是用setNegativeButton还是用setPositiveButton添加的按钮,在点击的时候,都会默认关闭对话框,但是我们的一 些实际需求,是需要让AlertDialog不消失,例如输入校验码,密码之类的校验问题,如果用户输入错误,而关闭后弹出对话框,就麻烦了。

解决方法:

 在AlertDialog按钮的点击事件中添加如下方法:
 try  {
    Field field = dialog.getClass() .getSuperclass().getDeclaredField("mShowing" );
    field.setAccessible( true );
    //   将mShowing变量设为false,表示对话框已关闭 
    field.set(dialog, false );
    dialog.dismiss();
} catch (Exception e) {
}

注意事项:

将上面的代码加到哪个按钮的单击事件代码中,哪个按钮就再也无法关闭对话框了。如果要关闭对话框,只需再将 mShowing 设为 true 即可。要注意的是,在一个按钮里设置了 mShowing 变量,也会影响另一个按钮的关闭对话框功能,因此,需要在每一个按钮的单击事件里都设置 mShowing 变量的值。
转载自:http://blog.csdn.net/abby_dcy/article/details/6049535

你可能感兴趣的:(如何让AlertDialog点击确定按钮时不消失)