Вызывает сбой приложения setText ("") или как установить значение NULL CharSequence - PullRequest
0 голосов
/ 20 марта 2020

Вызывает сбой приложения setText ("") или Как установить значение CharSequence NULL. Всякий раз, когда у меня есть только один символ в EditText и с помощью возврата на клавишу Key Stroke, мое приложение зависало.

У меня есть EditText с кодом ниже:

        bid_four = findViewById(R.id.bid_four);
        bid_four.setFilters(new InputFilter[]{ new InputFilterMinMax("1", "1000")});
        bid_four.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) {
                bid_4= Integer.parseInt(String.valueOf(s));
                total_ticket = (bid_0 + bid_1 + bid_2 + bid_3 + bid_4 + bid_5 + bid_6 + bid_7 + bid_8 + bid_9);
                total_value = (total_ticket * 11);
                total_number_of_ticket.setText(Integer.toString(total_ticket));
                total_number_of_purchase_ticket.setText(Integer.toString(total_value));
                buy_button_enable();
            }
        });

1 Ответ

0 голосов
/ 21 марта 2020

Всякий раз, когда у меня есть только один символ в EditText и, используя клавишу возврата на клавишу, происходит сбой моего приложения.

public void afterTextChanged(Editable s) {
    bid_4= Integer.parseInt(String.valueOf(s));

Когда есть один символ, и вы удаляете его, " любые оставленные символы. Вы не можете сделать целое число из пустой строки.

Я предлагаю рассматривать пустую строку как ноль, если это соответствует вашему случаю:

if (s.length() == 0) {
    bid_4 = 0;
} else {
    bid_4 = Integer.parseInt(s.toString());
}

Исключение, которое вы разместили в комментариях не соответствует проблеме, описанной в вашем вопросе. В любом случае, не звоните TextView.setText с целым числом. Целое число должно быть идентификатором ресурса, в вашем случае вы хотите вывести буквальное целое число. Сначала сделайте строку:

String.valueOf(someNumber);
someNumber + "";

Вы правильно сделали это в примере кода, поэтому, должно быть, ошиблись где-то еще.

...