我正在创建一个表单,用户必须输入名称而不包含数字或其他字符。
部分代码是:
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中的方法,但仍然无法工作。
答案 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;
}
});