Android EditText 验证后更改焦点并在对话框中显示错误

2024-05-06

我有一个带有 3 个 EditText 字段的简单活动。

用户、通行证、确认

在“用户”字段中输入内容并且该人在键盘上单击“下一步”后,我在那里有一个 setOnFocusChangeListener 来验证输入。如果验证失败,将打开一个对话框,其中包含一条消息和一个“确定”按钮。

对话框关闭后,我尝试以多种方式对我的用户 EditText 进行 requestFocus,通过在 Pass 上释放它,通过尝试再次在 User 上释放,通过请求而不是清除并再次请求,但是当我单击另一个字段时,软键盘不会再次打开,否则我最终会看到两个带有闪烁光标的 EditText 字段。

有任何想法吗?


我建议使用 TextWatcher 验证用户的输入:

EditText textbox = new EditText(context);
textbox.addTextChangedListener(new TextWatcher() {
            @Override
            public void afterTextChanged(Editable s) {
                // Your validation code goes here
            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
            }

            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
            }
        });

仅在 afterTextChanged 方法中处理验证,不要触及其他两个,如文档 http://developer.android.com/reference/android/text/TextWatcher.html。但是,每次输入更改时都会触发 afterTextChanged get ,因此如果用户输入单词“hello”,则在输入 h 时调用此方法,然后在输入 e 时再次调用,依此类推...此外,如果修改 edittext 值在 afterTextChanged 中, get 方法也被调用。

另一种方法是在 EditText 失去焦点时验证用户输入。为此,您可以使用:

    textbox.setOnFocusChangeListener(new OnFocusChangeListener() {

        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            // Your validation code goes here
        }
    });

但请注意,某些小部件可能无法抓住焦点,因此您的 Edittext 永远不会丢失焦点(例如,使用按钮)。

此外,EditText 还提供了setError http://developer.android.com/reference/android/widget/TextView.html#setError%28java.lang.CharSequence%29方法,该方法用红色错误标记标记 edittext,并将传递给 setError 的文本显示给用户(该文本可以由您在调用 setError("Your error message") 时设置)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android EditText 验证后更改焦点并在对话框中显示错误 的相关文章

  • 使用新语法应用 Android Gradle 插件

    如何使用新的 Gradle 插件语法应用 Android 插件 plugins id version 代替 buildscript dependencies classpath com android tools build gradle
  • Flutter 中的 AndroidManifest 中缺少默认通知通道元数据

    我在用firebase messaging 5 0 1软件包来实现推送通知 在 IOS 中一切正常 而在 Android 中 当我的移动应用程序在后台运行时 我收到通知 但它没有导航到相应的屏幕 它只是打开默认屏幕 如何实现到该特定屏幕的导
  • 在我的 Android 应用程序中使用 ServerValue.TIMESTAMP

    我读过很多相关的 stackoverflow 问题 ServerValue TIMESTAMP 但我不知道如何在我的应用程序中使用它 我需要获取帖子创建的时间戳 时间戳应该添加到与帖子的 uid 作者等相同的位置 代码片段其中写这篇文章Fi
  • 如何在android网络库(ION)中使用自签名SSL?

    使用此网络库 https github com koush ion https github com koush ion 由于当前状态是开发 我想使用自签名 SSL 证书 图书馆论坛有一些讨论 https github com koush
  • 如何从该 JAVA 文件中提取 Delphi 类以与 Android 一起使用?

    我的Delphi XE7项目需要与FTDI FT311 Android 配件芯片 http www ftdichip com Products ICs FT311D html 他们帮助提供了一个 Android 演示 其中包括他们的 JAV
  • 如何在活动中的必填字段中显示 * 符号

    我需要在活动中的必填字段中显示 符号 你能建议我怎样才能做到这一点吗 任何帮助 将不胜感激 我想说 作为必填字段的标记不遵循本机 Android 主题 的组合setHint and setError对于 Android 应用程序来说看起来更
  • 更改卡片高度即更改 Jetpack 中与 Material 3 组合的卡片颜色

    我正在使用 Card 可组合项 我希望它的颜色为白色 但是当我向它添加一些高度时 它的颜色会更改为更像主要容器颜色 我看过文档 其中有一种称为高程覆盖的东西 但找不到说明如何使用它的示例 这是我的代码 Card modifier Modif
  • 具有自定义源集的 Android Gradle 风格 - gradle 文件应该是什么样子?

    我有一个旧的 eclipse 项目 我已经转移到 android studio 并设置为使用flavor 它似乎工作得很好 直到我开始尝试在我的风格之间使用不同的 java 文件 我的项目设置是这样的 ProjectRoot acitonb
  • Android中如何检测WIFI连接何时建立?

    我需要检测何时通过 WIFI 建立网络连接 发送什么广播来确定已建立有效的网络连接 我需要验证是否存在有效的 HTTP 网络连接 我应该监听什么以及需要进行哪些额外测试才能知道是否存在有效连接 您可以注册一个BroadcastReceive
  • Android Fragment onCreateView 与手势

    我正在尝试在片段中使用手势 我在 FragmentActivity 中有以下内容来处理我的详细信息片段 我试图发生的情况是 当在视图上检测到滑动时 将该视图内的数据替换为上一个或下一个条目 如果有更好的方法来处理这个问题 我完全同意 然而
  • 具有代理设置的 Android 模拟器 - 致命错误:.//android/base/sockets/ 检查失败:isValidFd(fd)。 FD 1404 最大1024

    需要使用代理设置运行模拟器 我在命令提示符中使用以下命令来启动模拟器 emulator avd AVD for 3 7 WVGA Nexus One http proxy http username password IP Port 如果没
  • 适用于 Android 的 Google 云端硬盘\文档 API

    我在几个小时内将 Dropbox 与我的应用程序集成 因为 SDK 描述清晰并且有很好的使用示例 Google Drive 似乎只有一个 一刀切 的 Gdata SDK 它非常重 有很多依赖项 它使我的应用程序的大小增加了三倍 而且不是很直
  • 如何制作在手机和平​​板电脑上使用的响应式Android应用程序?

    我创建了一个 Android 应用程序 当我运行我的应用程序时Mobile Phone它工作得很好 但是当我跑进去时Tablet应用程序的布局已更改 那么 如何制作响应式Android应用程序用于Mobile并且也在Tablet 在Andr
  • Android 纹理仅显示纯色

    我正在尝试在四边形上显示单个纹理 我有一个可用的 VertexObject 它可以很好地绘制一个正方形 或任何几何对象 现在我尝试扩展它来处理纹理 但纹理不起作用 我只看到一种纯色的四边形 坐标数据位于 arrayList 中 the ve
  • 有多少种方法可以将位图转换为字符串,反之亦然?

    在我的应用程序中 我想以字符串的形式将位图图像发送到服务器 我想知道有多少种方法可以将位图转换为字符串 现在我使用 Base64 格式进行编码和解码 它需要更多的内存 是否有其他可能性以不同的方式做同样的事情 从而消耗更少的内存 现在我正在
  • 屏幕开/关检测

    在这里 我试图确定屏幕是否打开 但按下电源锁定 解锁按钮时它似乎不起作用 应用程序运行没有错误 但 if else 中的代码似乎没有效果 Edited现在代码可以工作了 谢谢Olgun 但媒体播放器播放不会停止 并且每次在屏幕上 离屏时都会
  • SDK >=26 仍需要 mipmap/ic_launcher.png?

    在 Android 中 有两种指定启动器图标 可以说是应用程序图标 的方法 老 方式 在 mipmap 文件夹中指定不同的 png 文件 通常命名为 ic launcher png 但可以通过以下方式设置名称android icon mip
  • Android Root 执行 su 带参数

    我在使用参数执行 su 时遇到问题 包含空格 我的 Command java 看起来像这样 public class Command Process process public String executeCommand String c
  • Android Gradle 同步失败:无法解析配置“:classpath”的所有工件

    错误如下 Caused by org gradle api internal artifacts ivyservice DefaultLenientConfiguration ArtifactResolveException Could n
  • 在android中创建SQLite数据库

    我想在我的应用程序中创建一个 SQLite 数据库 其中包含三个表 我将向表中添加数据并稍后使用它们 但我喜欢保留数据库 就好像第一次安装应用程序时它会检查数据库是否存在 如果存在则更新它 否则如果不存在则创建一个新数据库 此外 我正在制作

随机推荐

  • 复制构造函数和移动构造函数的效率差异

    C 11引入了右值引用的新概念 我在某处读到它并发现以下内容 class Base public Base Default Ctor Base int t Parameterized Ctor Base const Base b Copy
  • JQUERY MOBILE 文本输入中的自动完成

    我在网上搜索了很多但找不到任何解决方案 我正在制作一个网络应用程序 其中我想要 2 个文本框来获取用户的数据输入 我想要此文本框中的自动完成功能 自动完成的标签列表在本地可用 我尝试了listview 但我想要的是 在用户从自动完成提示中选
  • C# - 检索 COM+ 组件的属性?

    我的服务器 Windows Server 2003 上有一个 COM 组件 有什么方法可以以编程方式检索该组件的属性 例如使用的构造函数字符串 当我转到管理工具 gt 组件服务 gt COM 应用程序并右键单击我的组件时 这些是我希望能够检
  • 如何在使用应用程序的用户之间获得 Facebook 相互点赞

    假设两个用户正在使用一个应用程序 并已授予该应用程序适当的权限来检索他们的喜好 是否可以使用 FQL 或图形 API 来查找它们的共同点 类似于如何使用图形 API 查找两个用户之间的共同好友 我认为在我浏览文档时不存在这样的 api 调用
  • 手电筒打开时 Android 相机的奇怪行为

    我有以下 android 代码 这里用伪代码编写 mCamera configAndInitialize all I want to do before taking picture mCamera startPreview mCamera
  • SQL 层次结构 - 解析给定节点的所有祖先的完整路径

    我有一个由邻接列表描述的层次结构 不一定有单个根元素 但我确实有数据来识别层次结构中的叶 终端 项 所以 一个看起来像这样的层次结构 1 2 4 7 3 5 6 8 9 将通过表格来描述 就像这样 NOTE 我没有能力改变这种格式 id p
  • 无法打开“storage/logs/laravel-2019-11-22.log”:无法打开流:权限被拒绝

    在生产服务器上输入我的网站时出现以下错误 无法打开流或文件 var app current storage logs laravel 2019 11 22 log 无法打开流 权限被拒绝 我尝试运行以下命令 但 git 权限在终端中被拒绝
  • 所选设备不兼容 - Android Studio

    我之前已经解决了这个问题 但现在不能 我需要永久修复 在测试我的应用程序时 Android Studio 中的一切都很顺利 我现在遇到了 所选设备不兼容 的问题 当我去运行应用程序时 我想知道如何阻止它读取我手机的 API 作为 1 而不是
  • 使用媒体查询将 CSS 应用于除 IE 之外的所有浏览器

    我找到了一种将媒体查询应用于 IE 的方法 media ms high contrast none ms high contrast active 有没有办法将 CSS 应用于除 IE 之外的所有浏览器 就像是 media not ms h
  • asp.net 内联代码 <%# MyboolVal %>

    我一定在这里错过了一些愚蠢的东西 但我看不到它 我的工作在他们的网站上使用内联代码 例如
  • 从光栅计算器传输到 R 的条件命令

    到目前为止 我在ArcGIS的栅格计算器中使用了以下语句 Con Land use rst 20 Export rst 这会计算一个新栅格 其中仅包含来自导出的数据 其中 Land use 等于 20 这正是我想要的 但我想自动化这个R 因
  • Docker:Nginx 和 php5-fpm docker 不说话

    我想进行完全 Docker 化的 Drupal 安装 我的第一步是让容器与 Nginx 和 php5 fpm 一起运行 两者都基于 Debian 我在 CoreOS alpha 频道 使用 Digital Ocean 我的 Dockerfi
  • 如何让Register-ObjectEvent在后台运行?

    我有一个使用 PowerShell 的脚本Register ObjectEvent观察文件夹的更改 由于 Register ObjectEvent 仅在 PowerShell 会话处于活动状态时才起作用 因此我需要保持 PowerShell
  • C# 中的监视器与互斥体[重复]

    这个问题在这里已经有答案了 可能的重复 C 中各种线程同步选项之间有什么区别 https stackoverflow com questions 301160 what are the differences between various
  • CSS 中的垂直线(与
    相对)

    我知道它不存在 但是有纯CSS版本吗 想要设置高度 并将其设置为 1px 宽 如果可能的话 带有阴影 只是无法理解纯 CSS 的方式来做到这一点 需要绝对定位 因为我的容器有两个并排的 div 例如 60 40 的分割 需要两者之间的垂直规
  • 在 Kivy 应用程序中获取文本输入值

    Python Kivy 新手尝试构建一个测试应用程序 其中包含输入框 确定按钮和单击确定按钮时应更改文本的标签 但我得到了 NameError 全局名称 txt1 未定义 我究竟做错了什么 import Kivy import kivy i
  • 无法从同一项目的 bin 目录导入模块

    我正在构建一个库 该库将通过 pip 包含在其他项目中 我有以下目录 venv 是 virtualenv project bin run py myproj init py logger py venv 我激活虚拟环境 在 bin run
  • 减法进位标志

    我正在使用 MASM32 有了这个代码 mov eax 5 sub eax 10 CF 状态标志将被设置 但使用我的铅笔和纸 我实际上看到 MSB 没有任何进位 是的 我知道从较少的数字中减去大的数字集CF 但我想知道为什么 因为使用这段代
  • 等待多个延迟对象完成并使用解析值

    我正在尝试找出一种方法来等待多个延迟对象并在完成后处理它们 可能就像开始延迟对象的下一组 我被困住了 因为以下结果不是预期的结果 我期待结果为 allDone resovled values are 1 2 3 实际结果是 allDone
  • Android EditText 验证后更改焦点并在对话框中显示错误

    我有一个带有 3 个 EditText 字段的简单活动 用户 通行证 确认 在 用户 字段中输入内容并且该人在键盘上单击 下一步 后 我在那里有一个 setOnFocusChangeListener 来验证输入 如果验证失败 将打开一个对话