Android:验证Edittext必须字母

标签 android android-edittext

我正在创建一个表单,用户必须输入名称而不包含数字或其他字符。

部分代码为:

bSubmit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                String tampSalesName = salesName.getText().toString();
                String lala = cekHuruf(tampSalesName);
                if(lala.equals("number")){
                    Toast.makeText(RegisterSales.this, "Name must letters", Toast.LENGTH_SHORT).show();
                }


    public String cekHuruf(String a){
        String zzzz="";
        String aaa="";
        int ab=0;
        for (int i = 0; i < a.length(); i++) {
            int abc = i++;
            aaa= a.substring(i, abc);
            try {
                ab = Integer.parseInt(aaa);
            } catch (NumberFormatException sdef) {
                // TODO: handle exception
                zzzz="number";
            }       
        }
        return zzzz;
    }

它将打开 String.class 并显示错误:

private StringIndexOutOfBoundsException startEndAndLength(int start, int end) {
        throw new StringIndexOutOfBoundsException(this, start, end - start);
    }

逻辑:如果第一个单词是字母,它将始终填充字母。所以你对edittext的建议一定要信。我已经尝试了几种方法,从更改 xml 中的输入类型并尝试使用 android EditText alphabet-only validation 中的方法。但仍然无法工作。

最佳答案

使用此代码

name.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence s, int start, int before,
                int count) {
            // TODO Auto-generated method stub
        }
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
            // TODO Auto-generated method stub
        }
        @Override
        public void afterTextChanged(Editable s) {
            // TODO Auto-generated method stub
            Is_Valid_Person_Name(name); // pass your EditText Obj here.
        }
    });

public void Is_Valid_Person_Name(EditText edt) throws NumberFormatException {
    if (edt.getText().toString().length() <= 0) {
        edt.setError("Accept Alphabets Only.");
        valid_name = null;
    } else if (!edt.getText().toString().matches("[a-zA-Z ]+")) {
        edt.setError("Accept Alphabets Only.");
        valid_name = null;
    } else {
        valid_name = edt.getText().toString();
    }

}

它会有所帮助。

关于Android:验证Edittext必须字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25601534/

相关文章:

java - 在安卓中设置进度

android - 从 EditText 中删除自动对焦并重新获得焦点?

java - 仅接受几个字符的 EditText

Android EditText 保持提示可见和右侧

android - 在 Android 中以马赛克风格显示图库中的图像?

android - 将 EditText 与 TextView 关联以用于标记目的

android - 我们如何在 flutter_riverpod 中没有 ref 对象的情况下访问提供程序?

android - 即使授予了权限,访问 'storage/0/emulated/download' 路径时也被拒绝权限

android - 如何根据EditText属性调整TextView的高度和宽度?

java - 循环遍历 editTexts 以检查值