Мне нужно настроить текст редактирования, когда я ввожу текст, я отформатирую его при изменении текста. Я реализовал наблюдатель за текстом в тексте редактирования, ниже приведен код:
public class CustomEditText extends androidx.appcompat.widget.AppCompatEditText {
public CustomEditText(Context context) {
super(context);
init();
}
public CustomEditText(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
TextWatcher textChangeListener = new TextWatcher() {
boolean isIgnoreChange = false;
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int position, int noToAdd, int
noToDelete) {
CustomEditText.this.removeTextChangedListener(textChangeListener);
CustomEditText.this.setText("personal"); // with some logic
CustomEditText.this.addTextChangedListener(textChangeListener);
}
@Override
public void afterTextChanged(Editable editable) {
}
};
private void init() {
this.addTextChangedListener(textChangeListener);
}
}
И я завернул свой EditText в TextInputLayout в макете.
Проблема: когда я удаляю TextChangedListener и вызываю метод setText, onTextChanged все еще вызывается еще раз. Я прикрепил исходный код Android onTextChanged и отладил код, я узнал, что TextInputLayout также подключен к списку слушателей, который я не добавил, и, возможно, это вызывает. Многократный вызов после удаления слушателя нарушает мою логику. Если кто-то получит какой-либо намек, который мне не хватает, пожалуйста, помогите.