我可以使用任何Java验证器库来验证Android应用程序的文本输入吗?
我知道在春天有各种不同类型的验证器,例如检查值是否为int,值是否是有效的电子邮件等等。
在核心java甚至是android中有类似的东西吗?
提前欢呼。如果它已经实施,我不想重新发明轮子。我总是可以起诉java reg表达式来构建我自己的表达式,但是想知道它们是否专门用于电子邮件格式。答案 0 :(得分:3)
通常我会建议Hibernate Validator,但这对Android来说可能有些过分。如果您正在进行简单的表单输入,则可以编写自己的验证方法并使用正则表达式来验证输入。有一些正则表达式可以验证电子邮件地址:
答案 1 :(得分:2)
我已经写了一些支持类来解决这个问题。它包含验证器接口,抽象实现,验证结果类和自定义实现验证的2个示例。 1表示文本上的正则表达式,1表示检查复选框是否正确。
以下是我的博客链接,其中包含Android的源代码和一小部分解释表单验证:link text
答案 2 :(得分:1)
您应该编写自己的验证方法。例如。您可以对字符串java regex tutorial使用正则表达式模式。
答案 3 :(得分:1)
是的,我已经创作了一个库来处理Android上的验证。默认情况下,它会验证EditText
,CheckBox
,RadioButton
,Spinner
。您还可以使用注释来简化验证。
您不受内置注释或规则的限制。您始终可以扩展库中的Rule
类以验证自定义视图和规则。
它还支持异步验证(例如从远程服务器检查唯一的用户名。)
您可以从here检查项目页面。
我还编写了一个blog来描述当内置规则不足时如何编写自定义规则。
希望这有帮助。
编辑(作为对jonney评论的澄清)
是的,你提出的内容是有道理的。要注册新帐户并在同一个网络服务中进行验证,可以拨打n
个电话来注册新帐户,但我在博客中描述的示例将需要n + 1
个电话来注册新帐户。然而,这个例子只展示了Validator
。
要完成您要找的内容,您可以编写新规则。
Rule<EditText> registerIfUniqueRule = new Rule<EditText>("Username must be unique.") {
public boolean isValid(EditText view) {
String username = view.getText().toString();
boolean accountRegistered = false;
// Make a call to your web service
// Mode code…
return accountRegistered;
}
}
现在将此规则添加到Validator
实例。
validator.put(usernameEditText, registerIfUniqueRule);
从你的EventListener
中调用异步验证方法。
validator.validateAsync();
你已经完成;)验证器可能有限制,但在你提到的情况下,我们会想到一旦我们习惯了它就会使用API的新方法。