如何限制我的edittext以允许输入0-125,而不允许输入任何> 125?

时间:2017-08-17 07:32:23

标签: android

以下是我正在尝试的代码:

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”,而不接受这些字符。

3 个答案:

答案 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是您需要的确切答案