Android EditText с номером типа ввода делает значение при изменении текста всегда> 0
В настоящее время я делаю проверку, где у меня есть текст редактирования с номером типа ввода, используемый для отображения количества товаров, купленных в корзине пользователя. Я хочу убедиться, что при редактировании значения edittext, если значение равно "", "0" или "00" и т. Д., Пока оно < 1, значение будет установлено в "1".
Я устал код ниже:
txtJumlah.addTextChangedListener(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) {
int jumlah = Integer.parseInt(txtJumlah.getText().toString());
if(txtJumlah.getText().toString().equals("") || jumlah <= 1) {
txtJumlah.setText("1");
}
calculate();
}
});
Но он возвращает java.lang.StackruError: размер стека 8 МБ
Может кто-нибудь мне помочь? Спасибо
2 ответа
Замени это
if(txtJumlah.getText().toString().equals("") || jumlah <= 1) {
txtJumlah.setText("1");
}
от:
if(txtJumlah.getText().toString().equals("") || jumlah < 1) {
txtJumlah.setText("1");
}
Выше решение должно решить проблему.
Одно из предложений по оптимизации вашего кода:
int jumlah = Integer.parseInt(txtJumlah.getText().toString());
Это может привести к ParseException
(если txtJumlah.getText().toString()
это строка, а не числа)
Когда вы устанавливаете текст в "1", он снова и снова будет вызывать afterTextChanged, вызывая бесконечный цикл. Попробуйте вместо этого указать в своем выражении if значение jumlah < 1.