我可以获得旧值。但是我没有解决方案来输入新的值。
实际上,我想将旧值与新值分开。例如:如果oldText=hello
和新输入的EditText值等于(hello w
或w 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
和 count
参数 onTextChanged
方法中,您可以计算并获取新的键入值。
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) {
}
}
尝试以下代码:
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