Android:如何验证 EditText 输入?

标签 android android-edittext

我需要对一系列 EditText 进行表单输入验证。我正在使用 OnFocusChangeListeners 在用户键入每个内容后触发验证,但这并不符合最后一个 EditText 的预期。

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

什么是最好的解决方案?

我应该监控 InputMethod 何时与每个 EditText 解除绑定(bind),而不是何时更改焦点?如果有,怎么做?

最佳答案

你为什么不使用 TextWatcher

由于您有许多要验证的 EditText 框,我认为以下内容适合您:

  1. 您的 Activity 实现了 android.text.TextWatcher 接口(interface)
  2. 您将 TextChanged 监听器添加到您的 EditText 框
txt1.addTextChangedListener(this);
txt2.addTextChangedListener(this);
txt3.addTextChangedListener(this);
  1. 在被覆盖的方法中,您可以使用 afterTextChanged(Editable s) 方法,如下所示
@Override
public void afterTextChanged(Editable s) {
    // validation code goes here
}

Editable s 并不能真正帮助找到正在更改的 EditText 框的文本。但是您可以直接检查 EditText 框的内容,例如

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

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

编辑: 要获得更简洁的方法,请参阅 Christopher Perry's answer下面。

关于Android:如何验证 EditText 输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2763022/

相关文章:

安卓 BLE 通知 : method setCharacteristicNotification is enough?

android - 当我使用 adjustpan 时,工具栏移出屏幕

java - 对话框关闭在适配器内部不起作用

java - 如何在 TextView 中设置带重音的文本?

javascript - 多个查询解析 Javascript

android - Editor.java IndexOutOfBoundsException offset(x) 应该小于 line limit(y)

java - 从 edittext Android 识别电子邮件

android - 将编辑文本字段中的文本添加到电子邮件中

android - 输入文本后如何退出editText?

android - 如何向上 ScrollView 以显示对话框中使用的布局中被键盘隐藏的 EditText