Android TextWatcher工作,但在文本更改后不工作
这是我的文本监视程序,用于控制用户的出生年份输入。如果用户输入的值小于1900,我想将其替换为1900。应用程序工作正常。我可以为TextView输入一个值。但当开始输入以1开始,然后在我无法再次编辑TextView后立即替换为1900。键盘上的删除按钮不会删除输入的值Android TextWatcher工作,但在文本更改后不工作,android,textview,textwatcher,Android,Textview,Textwatcher,这是我的文本监视程序,用于控制用户的出生年份输入。如果用户输入的值小于1900,我想将其替换为1900。应用程序工作正常。我可以为TextView输入一个值。但当开始输入以1开始,然后在我无法再次编辑TextView后立即替换为1900。键盘上的删除按钮不会删除输入的值 @Override public void afterTextChanged(Editable s) { try { int birth = Intege
@Override
public void afterTextChanged(Editable s) {
try {
int birth = Integer.parseInt(s.toString());
if (birth < 1900) {
s.replace(0, s.length(), "1900");
}
} catch (NumberFormatException e) {
}
}
好吧,我的朋友,我已经考虑了一段时间了,这是我能得到的最接近的解决方案。试试这个
@Override
public void afterTextChanged(Editable s) {
try {
int birth = Integer.parseInt(s.toString());
if (birth < 1900 && s.length()>=4) {
s.replace(0, s.length(), "1900");
}
} catch (NumberFormatException e) {
}
}
这只是对if语句的一个小修改
replacing to "1900" after I can't edit TextView again. Delete button on keypad does not delete entered value.
这是预期的行为,并不意味着键盘上的delete(删除)按钮不删除重新输入的值,因为在将1替换为1900,然后尝试删除0后,最后一位数字将被删除,并立即使用input 190调用afterTextChanged,因此您的条件再次满足
replacing to "1900" after I can't edit TextView again. Delete button on keypad does not delete entered value.
public void afterTextChanged(Editable s) {
if(s.toString().length < 4) {
return;
}
// do your other logic here
}