在使用AlertDialog控件的时候,默认功能是点击确认或取消按钮弹出框会消失
不过也有一些情况需要在点击确认按钮时不让弹出框消失,这时要怎么设置呢?
代码如下:
首先设置一个弹出框
final EditText inputServer = new EditText(this);
AlertDialog.Builder builder=new AlertDialog.Builder(this);
builder.setMessage("内容");
builder.setView(inputServer);
builder.setPositiveButton("确认", new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int arg1) {
// TODO Auto-generated method stub
Log.d("MainActivity Message","确认");
if(inputServer.getText().toString().equals("")){
Log.d("MainActivity Message","输入框中没有内容,不予确认");
canCloseDialog(dialog, false);//不关闭对话框
}else {
dialog.dismiss();
}
}
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
Log.d("MainActivity Message","取消");
if(inputServer.getText().toString().equals("")){
Log.d("MainActivity Message","输入框中没有内容,不予确认");
}else {
dialog.dismiss();
}
}
});
builder.create().show();
写到这的时候可能有人会问了,我的代码中也没有叫canCloseDialog的这个方法呀,别急,接下来我们就要创建一个名为canCloseDialog的方法。
代码如下
private void canCloseDialog(DialogInterface dialogInterface, boolean close) {
try {
Field field = dialogInterface.getClass().getSuperclass().getDeclaredField("mShowing");
field.setAccessible(true);
field.set(dialogInterface, close);
} catch (Exception e) {
e.printStackTrace();
}
}
这样就可以实现弹出框在点击确认按钮之后不消失啦!赶快去试试吧! 如果有什么问题的话欢迎大家一起留言交流。