我可以得到旧的价值。但是我没有办法输入新的
值。

实际上,我想将旧值与新值分开。
例如:如果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) {

    }

}


感谢帮助。

最佳答案

通过start方法中的countonTextChanged参数,您可以计算并获取新的键入的值。

onTextChanged


  调用此方法以通知您s中的count
  以start开头的字符刚刚替换了具有
  长度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) {

    }

}

关于android - 如何使用TextWatcher在EditText上获取新输入的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53864396/

10-11 22:23
查看更多