防止用户在 edittext 中输入 10 个逗号后添加文本
Prevent user to add text after 10 commas entered in edittext
我必须创建一个逗号分隔的数组。因此,在 10 个逗号之后,edittext 不应接受用户输入的文本或后者 <- 我必须这样做。这是我正在使用的代码。但它在 onTextChanged() 中的 if 条件之后进入无限循环。
addTagsEt.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (tagsArray != null && tagsArray.length == 10) {
Toast.makeText(CreateJobTwoActivity.this, "Only 10 tags considered", Toast.LENGTH_SHORT).show();
addTagsEt.setText(addTagsEt.getText().toString().substring(0, addTagsEt.getText().toString().length() - 1));
}
}
@Override
public void afterTextChanged(Editable s) {
if (addTagsEt.getText().toString().contains(",")) {
tagsArray = addTagsEt.getText().toString().split("\s*,\s*");
tagsArr.addAll(Arrays.asList(tagsArray));
}
}
});
将 onTextChanged 函数更改为:
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (s.length() > 0) {
String str = s.toString();
int l = str.length() - str.replaceAll(",","").length();
if (l >= 10){
Toast.makeText(CreateJobTwoActivity.this, "Only 10 tags considered", Toast.LENGTH_SHORT).show();
String t = str.substring(0,start) + str.substring(start+count);
addTagsEt.setText(t);
addTagsEt.setSelection(start,start);
}
}
}
我必须创建一个逗号分隔的数组。因此,在 10 个逗号之后,edittext 不应接受用户输入的文本或后者 <- 我必须这样做。这是我正在使用的代码。但它在 onTextChanged() 中的 if 条件之后进入无限循环。
addTagsEt.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (tagsArray != null && tagsArray.length == 10) {
Toast.makeText(CreateJobTwoActivity.this, "Only 10 tags considered", Toast.LENGTH_SHORT).show();
addTagsEt.setText(addTagsEt.getText().toString().substring(0, addTagsEt.getText().toString().length() - 1));
}
}
@Override
public void afterTextChanged(Editable s) {
if (addTagsEt.getText().toString().contains(",")) {
tagsArray = addTagsEt.getText().toString().split("\s*,\s*");
tagsArr.addAll(Arrays.asList(tagsArray));
}
}
});
将 onTextChanged 函数更改为:
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (s.length() > 0) {
String str = s.toString();
int l = str.length() - str.replaceAll(",","").length();
if (l >= 10){
Toast.makeText(CreateJobTwoActivity.this, "Only 10 tags considered", Toast.LENGTH_SHORT).show();
String t = str.substring(0,start) + str.substring(start+count);
addTagsEt.setText(t);
addTagsEt.setSelection(start,start);
}
}
}