У меня есть EditText
, который преобразует пользовательский ввод, например, от 1000000 до 1000000.это код, который я использую в качестве конвертера:
private TextWatcher onTextChangedListener(final EditText editText) {
return new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
editText.removeTextChangedListener(this);
try {
String originalString = s.toString();
Long longval;
if (originalString.contains(",")) {
originalString = originalString.replaceAll(",", "");
}
longval = Long.parseLong(originalString);
DecimalFormat formatter = new DecimalFormat("###,###,###");
String formattedString = formatter.format(longval);
//setting text after format to EditText
editText.setText(formattedString);
editText.setSelection(editText.getText().length());
} catch (NumberFormatException nfe) {
nfe.printStackTrace();
}
editText.addTextChangedListener(this);
}
};
}
Когда я попробовал его на эмуляторе (API 25 и 29), он ведет себя правильно, EditText I печатать в правильном формате (1 000 000), нокогда я выпускаю приложение, люди сообщают, что формат стал 1.000000, а затем, когда используется функция около EditText
, приложение вылетает, в отчете о сбое магазина говорится, что это NumberFormatException.Что может вызвать это и как мне обойти это?