EditText блокирует мое приложение всякий раз, когда активируется OnTextChanged - PullRequest
0 голосов
/ 09 ноября 2018

Итак, я пытаюсь получить текст для редактирования, чтобы поместить знак доллара ($) перед вводимым текстом после того, как пользователь вводит его, используя следующий код. Всякий раз, когда я пытаюсь ввести что-либо в текст редактирования, он блокирует все приложение. Я попытался удалить код, и коробка работает нормально. Что я должен изменить? Или я должен использовать совершенно другое решение?

Код:

final EditText minAmt = fragView.findViewById(R.id.minPayment);

    minAmt.addTextChangedListener(new TextWatcher()
    {
        @Override
        public void afterTextChanged(Editable s)
        {
            minAmt.setText("$" + minAmt.getText().toString());
        }
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) 
        { }
        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) 
        { }
    });

Нужно ли мне завершать переопределения для изменения текста до и до? Для справки, я получил этот фрагмент кода из другого потока здесь: Добавление знака доллара ($) автоматически в редактируемый текст для Android Studio

1 Ответ

0 голосов
/ 09 ноября 2018

Ваше приложение зависает, потому что вы входите в бесконечный цикл. Вызов setText внутри afterTextChanged вызовет afterTextChanged. Решение:

@Override
public void afterTextChanged(Editable s)
{
    minAmt.removeTextChangedListener(this);
    minAmt.setText("$" + minAmt.getText().toString());
    minAmt.addTextChangedListener(this);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...