美文网首页
AlertDialog点击按钮后对话框不消失的处理方法

AlertDialog点击按钮后对话框不消失的处理方法

作者: 峰峰小 | 来源:发表于2017-05-14 17:43 被阅读1108次
-------转载自网络-------

我们在使用AlertDialog时,无论点击“确定”(PositiveButton)还是“取消”(NegativeButton),对话框都会消失,这其实是不合理的。如果遇到这种情况:AlertDialog里面有一个文本框,要求用户必须输入内容,但如果用户没有输入就点击了确定,这时对话框是不应该消失的,而是应该保留该对话框并提示用户必须输入文字。

解决办法:

final AlertDialog dialog = new AlertDialog.Builder(mContext).setView(view).setPositiveButton("确定", null)  
                            .setNegativeButton("取消", new DialogInterface.OnClickListener() {  
                                @Override  
                                public void onClick(DialogInterface dialog, int which) {  
                                    dialog.dismiss();  
                                }  
                            }).create();  
//这里必须要先调show()方法,后面的getButton才有效  
dialog.show();  
  
dialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(new View.OnClickListener() {  
    @Override  
    public void onClick(View v) {  
        if (TextUtils.isEmpty(et.getText())) {  
            showToast("文字不能为空");  
            return;  
        }  
        dialog.dismiss();  
    }  
});

也就是说,在创建AlertDialog时setPositiveButton方法的OnClickListener参数需传入null,然后让dialog show出来以后,再通过getButton(AlertDialog.BUTTON_POSITIVE)方法重新得到确定按钮,重设点击事件,这时如果不手动去调dialog.dismiss(),对话框就不会消失了。

相关文章

网友评论

      本文标题:AlertDialog点击按钮后对话框不消失的处理方法

      本文链接:https://www.haomeiwen.com/subject/ifiqxxtx.html