以下是我正在尝试的代码:
public void onTextChanged(CharSequence s, int start, int before, int count) {
try {
String strEnteredVal = edtMaxAge.getText().toString();
if(!strEnteredVal.equals("")) {
int num = Integer.parseInt(strEnteredVal);
if (num < 125) {
edtMaxAge.setText(num);
} else {
Toast.makeText(getContext(), "max age should be less than 125 ", Toast.LENGTH_SHORT).show();
edtMaxAge.setText("");
}
}
} catch (NumberFormatException ex) {
// Do something
}
}
当我输入一个&gt; = 125的数字时,我需要显示一条弹出消息,例如“最大年龄应该小于125”,而不接受这些字符。
答案 0 :(得分:2)
当你输入一些文本onTextChanged
方法被调用时,你很可能面临一种无休止的递归,并执行这一行edtMaxAge.setText(num);
,再次触发onTextChanged
。
尝试使用InputFilter而不是TextWatcher。 Here你可以找到一个例子。
答案 1 :(得分:1)
public void afterTextChanged(Editable editable) {
try {
if(!TextUtils.isEmpty(editable) {
initial = editable.toString();
int num = Integer.parseInt(initial);
if (num < 125) {
edtMaxAge.setText(num);
} else {
Toast.makeText(getContext(), "max age should be less
than 125 ", Toast.LENGTH_SHORT).show();
edtMaxAge.setText("");
return;
}
}
} catch (NumberFormatException ex) {
// Do something
}
}
答案 2 :(得分:0)
使用InputFilter
它提供了很多选择来过滤你的输入,如大写字母,在一定限度内的数字等。
Here是您需要的确切答案