Android中点击AlertDialog弹出框中的确认、取消按钮不让弹出框消失(二)-Java

317 阅读1分钟

在使用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();
    }
}

这样就可以实现弹出框在点击确认按钮之后不消失啦!赶快去试试吧! 如果有什么问题的话欢迎大家一起留言交流。