java - 如何在EditText字段上显示错误消息之前增加延迟?

标签 java android error-handling android-edittext

我对editText元素进行了一些简单的正则表达式验证。我遇到的问题是,如果验证失败(即使用户仍在键入),则错误会立即显示,这不是很好的UX。这是当前的代码。

TextWatcher tw = new TextWatcher() {
    public void afterTextChanged(Editable s) {
        String currentTime = t_timeEditText.getText().toString();
        if (!validTimepattern.matcher(currentTime).matches()){
            timeEditText.setError("Not a valid time");
        }
    }
}

我认为最好的解决方案是等到焦点移出editText元素,然后再运行上述验证。或者,我们可以在上一次输入后等待X毫秒,然后再运行验证,也可以在其中添加一些讨厌的硬编码延迟。

有什么建议?

最佳答案

您可以使用Handler来完成。根据您的要求更改TIME_DELAY。在类(class)级别中定义时间延迟(1000表示1秒)。我已根据您的要求修改了代码。在此我增加了2秒的延迟。你可以去。

val TIME_DELAY : Int = 2000
if (!validTimepattern.matcher(currentTime).matches()){

    Handler().postDelayed(object : Runnable{
                    override fun run() {
         timeEditText.setError(“Not a valid time”);
                    }
                }, TIME_DELAY )
    }

关于java - 如何在EditText字段上显示错误消息之前增加延迟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57324687/

相关文章:

android - ArrayList 是原始类型。对泛型类型 ArrayList<E> 的引用应该被参数化

android - android surface流媒体视频

error-handling - 如何捕捉和处理 Make 中的错误?

php - die()的正确使用?

java - 如何从Java中的嵌套类访问父类成员?

java - Selenium WebDriver + Java - 如何为 Firefox 配置代理设置?

java - if...else...if 对所有条件执行最终的 else

Java 和 string.hashCode() 在集群中跨机器的稳定性

android - 我们如何将 J2ME 中使用的 HttpConnection Connector.open(URL) 替换为 android

javascript - Ext JS 4的文件上传和内部服务器错误