Поскольку вы выполняете форматирование в TextWatcher (##, #### ....), т.е. вы добавляете «,» в EditText, и вы сделали EditText как числовой.Если его число, то "," символ недействителен.Таким образом, TextWatcher не может обновлять форматированный текст, содержащий ', ".
. У вас есть 3 варианта решения этой проблемы:
- Установите EditText как обычный, а не числовой.В TextWatcher обратите внимание на любые другие недопустимые символы, кроме 0-9. Вы можете показать IME для клавиатуры Mumber, когда фокус находится на EditText.
- Использовать маску для EditText.
- Пусть это будетчисловой. Ловушка FocusGain и FocusLost для EditText. В focusGain удалите форматирование и установите для inputType значение Numeric. & В focusLost сначала задайте для типа ввода значение Normal, а затем обновите введенное значение до значения formmated.для нормальной работы во время выполнения, используя
setInputType(InputType.TYPE_TEXT_VARIATION_NORMAL);
& для числового использования: setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL);
Я считаю, что 1-й вариант будет лучшим для обработки и управления.