如何使用TextWatcher在EditText上获得新的输入值



我可以获得旧值。但是我没有解决方案来输入新的值。

实际上,我想将旧值与新值分开。例如:如果oldText=hello和新输入的EditText值等于(hello ww hello),我想要newText=w

public class MyTextWatcher implements TextWatcher {

    private String oldText = "";
    private String newText = "";
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        this.oldText = s.toString();
    }
    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
    }
    @Override
    public void afterTextChanged(Editable s) {
    }
}

感谢您的帮助。

startcount参数 onTextChanged方法中,您可以计算并获取新的键入值。

ontextchanged

此方法被称为通知您,在s中,countstart开始的角色刚刚替换了 长度before。尝试从中尝试更改s是一个错误 此回调。

所以您可以:

public class MyTextWatcher implements TextWatcher {
    private String newTypedString = "";
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    }
    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        newTypedString = s.subSequence(start, start + count).toString().trim();
    }
    @Override
    public void afterTextChanged(Editable s) {
    }
}

尝试以下代码:

public class MyTextWatcher implements TextWatcher {

    private String oldText = "";
    private String newText = "";
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        this.oldText = s.toString();
    }
    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        newText = s.toString().replace(oldText, "").trim();
    }
    @Override
    public void afterTextChanged(Editable s) {
    }
}

有关文本观察者的信息:TextWatcher的OnTextchanged,beforetextchanged和AfterTextChanged

之间的差异

相关内容

  • 没有找到相关文章

最新更新