У меня есть простой Edittext
, и когда я собираюсь изменить вводимые буквы в настройке прослушивателя IM new textWatcher
, и это onTextChanged()
метод, подобный:
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
Log.d("qwer", "onTextChanged: " + s + " " + start + " " + before + " " + count);
String originalText = s.toString();
int originalTextLength = originalText.length();
int currentSelection = textHeading.getSelectionStart();
StringBuilder sb = new StringBuilder();
boolean hasChanged = false;
for (int i = 0; i < originalTextLength; i++) {
char currentChar = originalText.charAt(i);
if (isAllowed(currentChar) && i < 21) {
sb.append(currentChar);
} else {
hasChanged = true;
textHeading.setError("Please insert current letters");
}
}
if (hasChanged) {
String newText = sb.toString();
textHeading.setText(capitalize(newText));
textHeading.setSelection(currentSelection);
}
}
бесконечный цикл начинается, когда я возвращаю проверенные данные обратно в текст редактирования, потому что он снова вызывает метод ontextCahnged()
. поэтому моя цель - динамически изменять вводимые буквы, и я должен использовать их с большой буквы. Я знаю, что есть более простой способ сделать это. но мне нужно сделать таким образом.