验证EditText

时间:2018-04-12 12:47:02

标签: java android

我的应用中有EditText(et)。我希望能够限制字符数并验证输入。

我的输入类型是一个字符串序列,例如,n = number,a = alpha。如果我说10(最大)字符,我的输入字符串就像......

aannnnnnna

我在完成所有工作时遇到了问题。它似乎首先在我的角色计数上失败了(我评论了验证)。我的文本翻倍,我遇到了一个奇怪的问题。这是我的代码......

et.setFilters(new InputFilter[] {
    new InputFilter() {
        @Override
        public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {

            if (source.equals("")) {
                return source;
            }
            else {
                String boxInput = source.toString();
                String textFormat = options.getFormattedTextFormat();
                int maxChars = options.getFormattedTextMaxChars();
                if (maxChars > 0 && source.length() > maxChars) {
                    Toast.makeText(OpenForm.this, R.string.maxCharsText + " " + maxChars, Toast.LENGTH_SHORT).show();
                    boxInput = source.toString().substring(0,maxChars - 1);
                    source = boxInput;
                }
                if (!textFormat.isEmpty()) {
                    for (int i = 0; i < boxInput.length(); i++) {
                        char c = boxInput.charAt(i);
                        char test = textFormat.charAt(i);

                        if (test == 'n' && !Character.isDigit(c)) {
                            // Testing for a number, but character is not a number
                            Toast.makeText(OpenForm.this, R.string.badNumber + " " + i, Toast.LENGTH_SHORT).show();
                        } else if (test == 'a' && Character.isDigit(c)) {
                            // Testing for a letter but character is a number
                            Toast.makeText(OpenForm.this, R.string.badLetter + " " + i, Toast.LENGTH_SHORT).show();
                        }

                        //return boxInput;
                    }
                }

                return boxInput;
            }
        }
    }
});

1 个答案:

答案 0 :(得分:2)

在XML中,您可以添加此内容。

android:maxLength="10"

从中获取文本以验证您可以执行此操作..

String text = editText.getText().toString().trim();

if (text.equals("whatev") {

}

以编程方式限制编辑文本....

InputFilter[] filter = new InputFilter[1];
filter[0] = new InputFilter.LengthFilter(10);
editText.setFilters(filter);

你仍然可以像上面那样从中获取文本。