简体   繁体   中英

Android Application Crashes When EditText Is Entered Empty

I am trying to display a toast when EditText is empty and the button is clicked.

The app crashes when button is clicked.

What possibly am I doing wrong? Kindly help me with this as I am new to Mobile App Development. Where do I need to make changes or what to rectified in order to get this done? Any help is appreciated.

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

public class EmployeeActivity extends AppCompatActivity {

    EditText hourlyWage, totalRegularHours, totalOvertimeHours;
    Button btnCalculate;
    TextView result;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.employee_activity);
        hourlyWage = findViewById(R.id.et_hourlyWage);
        totalRegularHours = findViewById(R.id.et_totalRegularHours);
        totalOvertimeHours = findViewById(R.id.et_totalOvertimeHours);
        btnCalculate = findViewById(R.id.btnCalculate);
        result = (TextView) findViewById(R.id.tv_Result);
    }

    // method to be called on onClick
    public void calculateResult(View view) {
        double regularHours = Integer.parseInt(totalRegularHours.getText().toString());
        double overtimeHours;
        overtimeHours = Integer.parseInt(totalOvertimeHours.getText().toString());
        // check if EditText is empty
        if (hourlyWage.getText().toString().trim().equals("")) {
            Toast.makeText(this, "Please Enter The Value.", Toast.LENGTH_LONG).show();
        }
        // check if EditText is empty
        else if (totalRegularHours.getText().toString().trim().equals("")) {
            Toast.makeText(this, "Please Enter The Value.", Toast.LENGTH_LONG).show();
        }
        // check if EditText is out of range
        else if (regularHours <= 0 && regularHours >= 40) {
            Toast.makeText(this, "Please Enter The Value of Hours Between 0 to 40.", Toast.LENGTH_LONG).show();
        }
        // check if EditText is out of range
        else if (overtimeHours <= 0 && overtimeHours >= 30) {
            Toast.makeText(this, "Please Enter The Value of Hours Between 0 to 30.", Toast.LENGTH_LONG).show();
        }
        // calculates the answer
        else if (regularHours >= 0 && regularHours <= 40) {
            // formula for calculation
            double regularWage;
            regularWage = (Integer.parseInt(hourlyWage.getText().toString()) * Integer.parseInt(totalRegularHours.getText().toString())) + (Integer.parseInt(totalOvertimeHours.getText().toString()) * Integer.parseInt(hourlyWage.getText().toString()) * (1.5));
            //displays the result in a TextView
            result.setText(String.valueOf(regularWage));
        }
    }
}

You are parsing with Integer.parseInt with an empty string. Also, you are storing an integer in a different type - double. Here's your fix:

// method to be called on onClick
    public void calculateResult(View view) {

// check if EditText is empty
        if (hourlyWage.getText().toString().isEmpty()){
            Toast.makeText(this, "Please Enter The Value.", Toast.LENGTH_LONG).show();
            return;
        }
// check if EditText is empty
        if(totalRegularHours.getText().toString().isEmpty())
        {
           Toast.makeText(this, "Please Enter The Value.", Toast.LENGTH_LONG).show();
           return;
        }

        int regularHours = Integer.parseInt(totalRegularHours.getText().toString());

        int overtimeHours;
        overtimeHours = Integer.parseInt(totalOvertimeHours.getText().toString());

// check if EditText is out of range
        if (regularHours <= 0 && regularHours >= 40) {

            Toast.makeText(this, "Please Enter The Value of Hours Between 0 to 40.", Toast.LENGTH_LONG).show();

        }
// check if EditText is out of range
        else if (overtimeHours <= 0 && overtimeHours >= 30) {

            Toast.makeText(this, "Please Enter The Value of Hours Between 0 to 30.", Toast.LENGTH_LONG).show();

        }
// calculates the answer
        else if(regularHours >= 0 && regularHours <= 40) {
// formula for calculation
          double regularWage;
          regularWage = (Integer.parseInt(hourlyWage.getText().toString()) * Integer.parseInt(totalRegularHours.getText().toString())) + (Integer.parseInt(totalOvertimeHours.getText().toString()) * Integer.parseInt(hourlyWage.getText().toString()) * (1.5));
//displays the result in a TextView
          result.setText(String.valueOf(regularWage));
        }


    }

You can check if the EditText is empty or not using TextUtils class as following :

if(TextUtils.isEmpty(yourEditText.getText().toString())) {
    Toast.makeText(this, "Edit text is empty", Toast.LENGTH_SHORT).show();
    return;
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM