当前位置: 移动技术网 > IT编程>移动开发>Android > Android中AlertDialog 点击按钮后不关闭对话框的功能

Android中AlertDialog 点击按钮后不关闭对话框的功能

2019年07月24日  | 移动技术网IT编程  | 我要评论

小萝莉的发育全套图,追回蓝姬,官路鸿升

这里的问题:当我点击确定按钮,也就是 alertdialog 里的 positivebutton 的时候,我们需要判断用户是输入是否符合我们的预期,如果不符合通常提示用户重写输入,且不关闭当前的对话框,但上图中点击按钮后会自动的关闭窗口。

先看原来的这个是怎么写的:

private void opendialog() {
 linearlayout linearlayout = (linearlayout) layoutinflater.from(getcontext()).inflate(r.layout.change_password_dialog, null);
 final edittext originpasswordet = (edittext) linearlayout.findviewbyid(r.id.origin_password);
 textview forgetpassword = (textview) linearlayout.findviewbyid(r.id.forget_password);

 final alertdialog dialog = new alertdialog.builder(getcontext())
  .setview(linearlayout)
  .setpositivebutton("确定", new dialoginterface.onclicklistener() {
   @override
    public void onclick(dialoginterface dialog, int which) {
    string originpassword = originpasswordet.gettext().tostring().trim();
     //传到后台
    }
  })
  .create();

 dialog.show();
}

虽然图片里和代码的并不是同一个,但问题是一样的

setpositivebutton 方法中,即使我们没有调用 dialog.dismiss()

但对话框还是会自动的关闭,就算我们在 onclick 里判断输入的内容,错误的提示也会在窗口关闭后才出现。

在 alertdialog 提供的 api 中我也没有找到可以设置的地方,如果有还请告知。而我解决这个问题的办法:

final alertdialog dialog = new alertdialog.builder(getactivity())
  .settitle(msg)
  .setview(layout)
  .setnegativebutton("取消", new dialoginterface.onclicklistener() {
   @override
   public void onclick(dialoginterface dialog, int which) {
    dialog.dismiss();
   }
  })
  .setpositivebutton("submit",null)
  .setcancelable(true)
  .create();
dialog.show();

//为了避免点击 positive 按钮后直接关闭 dialog,把点击事件拿出来设置
dialog.getbutton(alertdialog.button_positive)
  .setonclicklistener(new view.onclicklistener() {

 @override
 public void onclick(view v) {
  pattern pattern = pattern.compile("[0-9]*");
  matcher matcher = pattern.matcher(edittext.gettext());
  if (!matcher.matches()){
   showtoast("请输入正确的 id");
   break;
  }
  dialog.dismiss();
  }
 }
});

setpositivebutton("submit",null) 监听事件传入 null

在调用 dialog.show() 后再设置 button 的点击事件,否则 getbutton() 会返回空

这样在我们手动调用 dialog.dismiss() 之前,对话框是不会关闭的。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网