Как выполнять математические действия?

В приложение есть 2 EditText мне нужно выполнить математическое действие 1EditText * 2EditText и то что получится умножить на 2

binding.inputQuantity
binding.inputPrice

Нашел пример

int a = Integer.parseInt(binding.inputQuantity.getText().toString());
int b = Integer.parseInt(binding.inputPrice.getText().toString());

int res = (a * b) * 2;
binding.totalPrice.setText(String.valueOf(res));

Но срабатывает оно когда у EditText изначально добавлен какой то текст android:text="1" + к тому же при повторном вводе данных уже нечего не работает. Мне нужно что бы оно автоматом обновлялось при вводе в EditText без каких либо обработчиков нажатий.

   <EditText
        android:id="@+id/inputQuantity"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:layout_marginEnd="4dp"
        android:background="@drawable/input_bg"
        android:drawableStart="@drawable/ic_view"
        android:drawablePadding="10dp"
        android:ems="10"
        android:fontFamily="@font/aldrich"
        android:text="1"
        android:hint="@string/_1"
        android:inputType="number"
        android:paddingStart="20dp"
        android:paddingTop="13dp"
        android:paddingEnd="20dp"
        android:paddingBottom="13dp"
        android:textColor="@color/colorWhite"
        android:textColorHint="@color/colorWhite"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/inputTitle"
        app:layout_editor_absoluteX="97dp"
        app:layout_editor_absoluteY="248dp" />

    <EditText
        android:id="@+id/inputPrice"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:layout_marginStart="4dp"
        android:background="@drawable/input_bg"
        android:drawableStart="@drawable/ic_price"
        android:drawablePadding="10dp"
        android:ems="10"
        android:fontFamily="@font/aldrich"
        android:text="1"
        android:hint="@string/_2"
        android:inputType="number"
        android:paddingStart="20dp"
        android:paddingTop="13dp"
        android:paddingEnd="20dp"
        android:paddingBottom="13dp"
        android:textColor="@color/colorWhite"
        android:textColorHint="@color/colorWhite"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/inputTitle"
        app:layout_editor_absoluteX="97dp"
        app:layout_editor_absoluteY="248dp" />

Нашел реализацию того что мне нужно но только когда из какого либо поля EditText убрать значение то приложение закрывается из за того что поле пустое, как это можно исправить?

    binding.inputPrice.addTextChangedListener(new TextWatcher() {

    public void afterTextChanged(Editable s) {
        int a = Integer.parseInt(binding.inputQuantity.getText().toString());
        int b = Integer.parseInt(binding.inputPrice.getText().toString());

        int res = (a * b) * 2;
        binding.totalPrice.setText(String.valueOf(res));
    }

    public void beforeTextChanged(CharSequence s, int start, int count, int after) {}

    public void onTextChanged(CharSequence s, int start, int before, int count) {}
});

binding.inputQuantity.addTextChangedListener(new TextWatcher() {

    public void afterTextChanged(Editable s) {
        int a = Integer.parseInt(binding.inputQuantity.getText().toString());
        int b = Integer.parseInt(binding.inputPrice.getText().toString());

        int res = (a * b) * 2;
        binding.totalPrice.setText(String.valueOf(res));
    }

    public void beforeTextChanged(CharSequence s, int start, int count, int after) {}

    public void onTextChanged(CharSequence s, int start, int before, int count) {}
});

Ответы (1 шт):

Автор решения: Eva Evakuator

Вот что помогло мне решить эту проблему, а именно исключения tey end catch!

private void gettingTotalPrice() {

    binding.inputPrice.addTextChangedListener(new TextWatcher() {

        public void afterTextChanged(Editable s) {
            try {
                int a = Integer.parseInt(binding.inputQuantity.getText().toString());
                int b = Integer.parseInt(binding.inputPrice.getText().toString());

                int res = (a * b) * 2;
                binding.totalPrice.setText(String.valueOf(res));
            } catch (NumberFormatException e) {
                e.printStackTrace();
            }

        }

        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        }

        public void onTextChanged(CharSequence s, int start, int before, int count) {
        }
    });

    binding.inputQuantity.addTextChangedListener(new TextWatcher() {

        public void afterTextChanged(Editable s) {
            try {
                int a = Integer.parseInt(binding.inputQuantity.getText().toString());
                int b = Integer.parseInt(binding.inputPrice.getText().toString());

                int res = (a * b) * 2;
                binding.totalPrice.setText(String.valueOf(res));
            } catch (NumberFormatException e) {
                e.printStackTrace();
            }
        }

        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        }

        public void onTextChanged(CharSequence s, int start, int before, int count) {
        }
    });
}
→ Ссылка