android edittext格式验证,Android:如何验证EditText输入?

Android:如何验证EditText输入?

我需要在一系列EditTexts上进行表单输入验证。 我使用OnFocusChangeListeners在用户输入每个之后触发验证,但这不符合上一个EditText的需要。

如果在键入最终的EditText时单击“完成”按钮,则InputMethod将断开连接,但技术上焦点永远不会丢失在EditText上(因此永远不会发生验证)。

什么是最好的解决方案?

当InputMethod从每个EditText解除绑定而不是焦点更改时,我应该监视吗? 如果是这样,怎么样?

14个解决方案

145 votes

你为什么不用afterTextChanged(Editable s)?

由于您有多个afterTextChanged(Editable s)箱需要验证,我认为以下内容适合您:

您的活动实现了afterTextChanged(Editable s)接口

您将TextChanged侦听器添加到EditText框

txt1.addTextChangedListener(this);

txt2.addTextChangedListener(this);

txt3.addTextChangedListener(this);

在重写的方法中,您可以使用afterTextChanged(Editable s)方法,如下所示

@Override

public void afterTextChanged(Editable s) {

// validation code goes here

}

Editable s并没有真正帮助查找哪个EditText框的文本正在被更改。 但是你可以直接检查EditText框的内容

String txt1String = txt1.getText().toString();

// Validate txt1String

用同样的方法。 我希望我很清楚,如果我是,它会有所帮助!:)

编辑:有关更清洁的方法,请参阅下面的克里斯托弗佩里的答案。

Nikhil answered 2019-04-23T06:27:36Z

105 votes

TextWatcher对我的口味有点冗长,所以我做了一些容易吞下的东西:

public abstract class TextValidator implements TextWatcher {

private final TextView textView;

public TextValidator(TextView textView) {

this.textView = textView;

}

public abstract void validate(TextView textView, String text);

@Override

final public void afterTextChanged(Editable s) {

String text = textView.getText().toString();

validate(textView, text);

}

@Override

final public void beforeTextChanged(CharSequence s, int start, int count, int after) { /* Don't care */ }

@Override

final public void onTextChanged(CharSequence s, int start, int before, int count) { /* Don't care */ }

}

只需像这样使用它:

editText.addTextChangedListener(new TextValidator(editText) {

@Override public void validate(TextView textView, String text) {

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值