开发过程中,有时候会有这样的需求:
点击某个按钮之后显示一个对话框,对话框上面有一个输入框,并且有“确认”和“取消”两个按钮。当用户点击确认按钮时,需要对输入框的内容进行判断。如果内容为空则不关闭对话框,并toast提示。
使用AlertDialog.Builder创建对话框时,可以使用builder.setNegativeButton和builder.setPositiveButton两个方法设置取消按钮和确认按钮的点击事件。然而问题在于,只要用户点击了确认按钮或者取消按钮,系统就会自动将对话框关闭。
解决此问题的方法是:
(1)使用builder.setPositiveButton设置确认按钮的文字,在监听中添加Field
Field field;
try {
field = dialog.getClass().getSuperclass()
.getDeclaredField("mShowing");
field.setAccessible(true);
// 设置mShowing值,欺骗android系统
field.set(dialog, false);//如果为true则会推出
} catch (NoSuchFieldException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}