Android:验证Edittext必须写信

时间:2014-09-01 08:15:05

标签: 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中的方法,但仍然无法工作。

3 个答案:

答案 0 :(得分:2)

使用此代码

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();
    }

}

它会有所帮助。

答案 1 :(得分:0)

            <EditText
                android:id="@+id/username"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" >

            </EditText>

答案 2 :(得分:0)

使用此代码

        b.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            String a=salesName.getText().toString();
            Boolean z=cekHuruf(a);
            if(!z)
            {
                Toast.makeText(MainActivity.this, "Name must letters", Toast.LENGTH_SHORT).show();
            }
        }
        public boolean cekHuruf(String b){
            char[] chars = b.toCharArray();

            for (char c : chars) {
                if(!Character.isLetter(c)) {
                    return false;
                }
            }

            return true;
        }
    });