Building Android Apps | Codecademy
Hello,
I have a problem with the task : * Ensuring the app doesn’t crash when the equals button is pressed and one of the number boxes is empty.
- When equals is pressed, before you do anything, ensure that the number boxes aren’t empty so an error doesn’t throw.
the button equals is always false.
package com.codecademy.simplecalculator;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
EditText firstNumber;
EditText secondNumber;
RadioGroup operators;
RadioButton add;
RadioButton subtract;
RadioButton divide;
RadioButton multiply;
Button equals;
TextView result;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
firstNumber = findViewById(R.id.number1);
secondNumber = findViewById(R.id.number2);
operators = findViewById(R.id.Radio_Groupoperators);
add = findViewById(R.id.add);
subtract = findViewById(R.id.subtract);
multiply = findViewById(R.id.multiply);
divide = findViewById(R.id.divide);
equals = findViewById(R.id.equals);
result = findViewById(R.id.result);
equals.setEnabled(false);
/*firstNumber.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) {
equals.setEnabled(true);
}
});*/
equals.setOnClickListener(v -> {
int firstNumberValue = Integer.parseInt(firstNumber.getText().toString());
int secondNumberValue = Integer.parseInt(secondNumber.getText().toString());
int operatorButtonId = operators.getCheckedRadioButtonId();
Integer answer;
if (operatorButtonId == add.getId()) {
answer = firstNumberValue + secondNumberValue;
} else if (operatorButtonId == subtract.getId()) {
answer = firstNumberValue - secondNumberValue;
} else if (operatorButtonId == multiply.getId()) {
answer = firstNumberValue * secondNumberValue;
} else {
answer = firstNumberValue / secondNumberValue;
}
if (equals.getText().toString() == "") {
Toast.makeText(this, "Tap a number", Toast.LENGTH_SHORT).show();
} else {
equals.setEnabled(true);
}
result.setText(answer.toString());
});
}
}