Android中AlertDialog 点击按钮后不关闭对话框的功能
发布时间 - 2026-01-11 00:37:10 点击率:次
这里的问题:当我点击确定按钮,也就是 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实现弹出对话框
# 对话框
# 我也
# 是怎么
# 当我
# 会在
# 请输入
# 而我
# 重写
# 不符合
# 拿出来
# 没有找到
# 后才
# 关闭窗口
# 为了避免
# 还请
# 先看
# 图中
# 解决这个问题
# 大家多多
# 是否符合
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何在阿里云ECS服务器部署织梦CMS网站?
html文件怎么打开证书错误_https协议的html打开提示不安全【指南】
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
如何在IIS服务器上快速部署高效网站?
Laravel事件监听器怎么写_Laravel Event和Listener使用教程
C语言设计一个闪闪的圣诞树
高防服务器如何保障网站安全无虞?
jQuery 常见小例汇总
如何在建站之星网店版论坛获取技术支持?
详解Android——蓝牙技术 带你实现终端间数据传输
Python面向对象测试方法_mock解析【教程】
如何在Windows 2008云服务器安全搭建网站?
如何在 React 中条件性地遍历数组并渲染元素
如何在腾讯云服务器快速搭建个人网站?
韩国服务器如何优化跨境访问实现高效连接?
Python3.6正式版新特性预览
Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤
Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?
Laravel API资源(Resource)怎么用_格式化Laravel API响应的最佳实践
Bootstrap整体框架之CSS12栅格系统
韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐
网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?
Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧
Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用
详解jQuery中基本的动画方法
Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】
非常酷的网站设计制作软件,酷培ai教育官方网站?
php在windows下怎么调试_phpwindows环境调试操作说明【操作】
JS碰撞运动实现方法详解
品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?
Laravel怎么实现模型属性转换Casting_Laravel自动将JSON字段转为数组【技巧】
浅析上传头像示例及其注意事项
Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧
详解vue.js组件化开发实践
如何制作一个表白网站视频,关于勇敢表白的小标题?
Edge浏览器如何截图和滚动截图_微软Edge网页捕获功能使用教程【技巧】
Linux虚拟化技术教程_KVMQEMU虚拟机安装与调优
如何在云服务器上快速搭建个人网站?
网站页面设计需要考虑到这些问题
Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转
如何批量查询域名的建站时间记录?
Python自然语言搜索引擎项目教程_倒排索引查询优化案例
公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?
如何在局域网内绑定自建网站域名?
Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置
JavaScript中如何操作剪贴板_ClipboardAPI怎么用
如何在新浪SAE免费搭建个人博客?
免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?
JS弹性运动实现方法分析
香港服务器建站指南:免备案优势与SEO优化技巧全解析

