android - 如何限制我的 edittext 允许输入 0-125,而不允许输入大于 125 的任何内容?

标签 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
            }
        }

当我输入大于等于 125 的数字时,我需要显示一条弹出消息,例如“最大年龄应小于 125”,而不接受这些字符。

最佳答案

很可能你正面临一种无休止的递归,当你输入一些文本时 onTextChanged 方法被调用并执行这一行 edtMaxAge.setText(num); 这再次触发 onTextChanged

尝试使用InputFilter而不是 TextWatcher。 Here你可以找到一个例子。

关于android - 如何限制我的 edittext 允许输入 0-125,而不允许输入大于 125 的任何内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45729097/

相关文章:

android - AsyncTask 和 listview - 如何避免每次都加载所有数据

java - 避免单实例变量在android中被混淆

android - 在库中实现 Firebase

AndroidManifest 包名称与 Android 中的风格冲突

android-如何使按钮背景不透明

android - 如何将音频/视频文件存储到 android 中的 SQLite 数据库?

java - 将文本文件写入内部存储的最佳方法?

java - 将 boolean 值从注册发送到登录,但 toast 不工作

android - Dialog 不会在按下按钮时触发关闭监听器

javascript - navigationControl、mapTypeControl 和 scaleControl 位于 map 后面