Я хотел бы редактировать содержимое поля EditText
каждый раз, когда пользователь вводит новый символ. В основном я хочу отформатировать номер телефона, используя libphonenumber
.
Я реализовал TextWatcher
, который считывает содержимое поля и форматирует его в формат телефона. Но каждый раз, когда я устанавливаю текст EditText
с отформатированной строкой, наблюдатель вызывается снова, устанавливает текст еще раз, и он застревает в этом бесконечном цикле.
Каков наилучший или правильный способ редактирования текста в качестве пользовательских типов?
@Override
public void afterTextChanged(Editable editable) {
if (editable.length() > 1) {
try {
PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
PhoneNumber numberProto = phoneUtil.parse(editable.toString(), "BR");
String formatted = phoneUtil.format(numberProto, PhoneNumberFormat.NATIONAL);
telephone.setText(formatted);
} catch (NumberParseException e) {
Log.d("Telefone", "NumberParseException was thrown: " + e.toString());
}
}
}