Android Studio:只有使用 TextChangedListener 的字母时才接受输入
Android Studio: only accept input if its a letter using TextChangedListener
我正在使用 Android Studio 开发一个应用程序,我想在其中获取用户的输入并在以后使用它。
如果是字母,我只想接受此输入。如果用户输入一个数字,我想向用户显示一条错误消息,而不是接受输入。
这是我目前正在处理的代码,目前它接受用户输入的任何输入:
EditText input;
input.setText("");
input = findViewById(R.id.input);
input.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
if (charSequence.length() != 0) {
useInputLaterOn(charSequence.charAt(0));
}
}
@Override
public void afterTextChanged(Editable editable) {
}
});
使用此代码检查字母,如果不是字母则显示错误
input.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
if (charSequence.length() == 0) return;// No need to check because there's no text
Pattern pattern = Pattern.compile("^[a-zA-Z ]+$");
Matcher matcher = pattern.matcher(charSequence.toString());
if (!matcher.matches()) {
// It's not a letter
// Remove last entered character and show error message
input.setText(charSequence.toString().substring(0, charSequence.toString().length() - 1));
input.setSelection(input.getText().toString().length());
input.setError("Not a letter");
} else {
// It's a letter do something
}
}
@Override
public void afterTextChanged(Editable editable) {
}
});
我正在使用 Android Studio 开发一个应用程序,我想在其中获取用户的输入并在以后使用它。
如果是字母,我只想接受此输入。如果用户输入一个数字,我想向用户显示一条错误消息,而不是接受输入。
这是我目前正在处理的代码,目前它接受用户输入的任何输入:
EditText input;
input.setText("");
input = findViewById(R.id.input);
input.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
if (charSequence.length() != 0) {
useInputLaterOn(charSequence.charAt(0));
}
}
@Override
public void afterTextChanged(Editable editable) {
}
});
使用此代码检查字母,如果不是字母则显示错误
input.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
if (charSequence.length() == 0) return;// No need to check because there's no text
Pattern pattern = Pattern.compile("^[a-zA-Z ]+$");
Matcher matcher = pattern.matcher(charSequence.toString());
if (!matcher.matches()) {
// It's not a letter
// Remove last entered character and show error message
input.setText(charSequence.toString().substring(0, charSequence.toString().length() - 1));
input.setSelection(input.getText().toString().length());
input.setError("Not a letter");
} else {
// It's a letter do something
}
}
@Override
public void afterTextChanged(Editable editable) {
}
});