Android实现点击AlertDialog上按钮时不关闭对话框的方法

开发过程中,有时候会有这样的需求:


点击某个按钮之后显示一个对话框,对话框上面有一个输入框,并且有“确认”和“取消”两个按钮。当用户点击确认按钮时,需要对输入框的内容进行判断。如果内容为空则不关闭对话框,并toast提示。

使用AlertDialog.Builder创建对话框时,可以使用builder.setNegativeButton和builder.setPositiveButton两个方法设置取消按钮和确认按钮的点击事件。然而问题在于,只要用户点击了确认按钮或者取消按钮,系统就会自动将对话框关闭。


解决此问题的方法是:

  1. 创建Builder对象
        mEdit = new EditText(this);
        AlertDialog.Builder builder=new Builder(this,AlertDialog.THEME_HOLO_LIGHT);
        builder.setTitle("设置密保问题");
        builder.setMessage("你的手机号码");
        builder.setView(mEdit);
        builder.setCancelable(false);
  1. 使用builder.setPositiveButton设置确认按钮的文字,但是不添加监听。即:
        builder.setPositiveButton("确认", null);
  1. 得到AlertDialog对象
        dialog=builder.create();
        dialog.show();
  1. 获取到对话框上的确认按钮,然后对该按钮添加普通的View.OnClickListener。在用户输入正确的时候,手动调用alertDialog.dismiss()关闭对话框。
            dialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(new OnClickListener() {

            @Override
                public void onClick(View v) {
                    String mB=mEdit.getText().toString().trim();
                    if (!TextUtils.isEmpty(mB)) {//密保不为空
                        dialog.dismiss();
                    }else {
                    Toast.makeText(GuideGesturePasswordActivity.this, "密保为空",Toast.LENGTH_SHORT).show();
                    }
                }
            });

问题完美解决。

发布了24 篇原创文章 · 获赞 5 · 访问量 4万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览