防止用户在 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);
        }
    }
}