如何使用TextWatcher比较两个值

时间:2016-08-29 20:19:29

标签: android

我正在使用TextWatcher实时接收EditText中的每个字母,我想将EditText文本与特定字符串进行比较。

当两个值不同时,我想从EditText更改颜色。

我已经尝试实现我的想法,但是工作不正常,我没有收到任何错误,即使第一个字母相等,文字也一直保持红色。

我的代码:

pip install gunicorn
gunicorn my_app:app

谢谢。

3 个答案:

答案 0 :(得分:0)

您的主要问题是您将整个CharSequence与一个单独的角色进行比较,这个角色不太可能相等。如果要比较整个字符串,请删除for循环并使用:

if(s.equals(getString()) {
   // Green
} else {
   // Red
}

如果你真的想循环并逐字母地比较,那么当你可以直接比较字符串时,这是一个糟糕的解决方案。

答案 1 :(得分:0)

尝试直接在textwatcher上使用edittext的字符串。

if(mEditText.getText().toString.equals("YourString") {
    mEditText.setTextColor(Color.GREEN);
} else {
    mEditText.setTextColor(Color.RED);
}

答案 2 :(得分:0)

public void onTextChanged(CharSequence s, int start, int before, int count) {
    if(s.toString().equals(mEditText.getText().toString())) {
        mEditText.setTextColor(Color.GREEN);
    }
    else {
        mEditText.setTextColor(Color.RED);
    }
}

无需使用for循环。只需从CharSequence对象中获取字符串,并将其与EditText对象的字符串进行比较。把它放在onTextChanged方法的内部,它会在输入一个字符后进行比较。