全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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

这里的问题:当我点击确定按钮,也就是 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() 之前,对话框是不会关闭的。

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


# alertdialog  # 不关闭  # 点击不消失  # Android实现点击AlertDialog上按钮时不关闭对话框的方法  # Android中AlertDialog各种对话框的用法实例详解  # Android使用AlertDialog实现的信息列表单选、多选对话框功能  # Android修改源码解决Alertdialog触摸对话框边缘消失的问题  # Android 自定义AlertDialog对话框样式  # Android对话框AlertDialog.Builder使用方法详解  # ANDROID中自定义对话框AlertDialog使用示例  # android自定义AlertDialog对话框  # Android Alertdialog(实现警告对话框)  # Android开发之AlertDialog实现弹出对话框  # 对话框  # 我也  # 是怎么  # 当我  # 会在  # 请输入  # 而我  # 重写  # 不符合  # 拿出来  # 没有找到  # 后才  # 关闭窗口  # 为了避免  # 还请  # 先看  # 图中  # 解决这个问题  # 大家多多  # 是否符合 


相关文章: 如何安全更换建站之星模板并保留数据?  Swift中swift中的switch 语句  整蛊网站制作软件,手机不停的收到各种网站的验证码短信,是手机病毒还是人为恶搞?有这种手机病毒吗?  如何选择高效便捷的WAP商城建站系统?  建站之星24小时客服电话如何获取?  广州商城建站系统开发成本与周期如何控制?  无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?  矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?  c++怎么使用类型萃取type_traits_c++ 模板元编程类型判断【方法】  红河网站制作公司,红河事业单位身份证如何上传?  香港服务器租用费用高吗?如何避免常见误区?  宝塔新建站点为何无法访问?如何排查?  郑州企业网站制作公司,郑州招聘网站有哪些?  如何确认建站备案号应放置的具体位置?  如何访问已购建站主机并解决登录问题?  已有域名和空间,如何快速搭建网站?  微网站制作教程,我微信里的网站怎么才能复制到浏览器里?  音乐网站服务器如何优化API响应速度?  建站之星2.7模板快速切换与批量管理功能操作指南  如何在橙子建站中快速调整背景颜色?  小程序网站制作需要准备什么资料,如何制作小程序?  开心动漫网站制作软件下载,十分开心动画为何停播?  制作网站哪家好,cc、.co、.cm哪个域名更适合做网站?  婚礼视频制作网站,学习*后期制作的网站有哪些?  建站org新手必看:2024最新搭建流程与模板选择技巧  如何通过FTP服务器快速搭建网站?  义乌企业网站制作公司,请问义乌比较好的批发小商品的网站是什么?  linux top下的 minerd 木马清除方法  猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?  建站VPS推荐:2025年高性能服务器配置指南  七夕网站制作视频,七夕大促活动怎么报名?  如何在宝塔面板中修改默认建站目录?  建站之星后台密码遗忘如何找回?  ,巨量百应是干嘛的?  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  网站图片在线制作软件,怎么在图片上做链接?  公众号网站制作网页,微信公众号怎么制作?  网站app免费制作软件,能免费看各大网站视频的手机app?  香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化  西安专业网站制作公司有哪些,陕西省建行官方网站?  教程网站设计制作软件,怎么创建自己的一个网站?  如何快速配置高效服务器建站软件?  网站制作中优化长尾关键字挖掘的技巧,建一个视频网站需要多少钱?  建站之星如何快速更换网站模板?  如何在建站之星绑定自定义域名?  高端云建站费用究竟需要多少预算?  如何用景安虚拟主机手机版绑定域名建站?  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  表情包在线制作网站免费,表情包怎么弄?  如何在云主机上快速搭建多站点网站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。