Skip to content
Advertisement

Fix app keeps stopping made with android studio [closed]

I’m new in the android development field. Last night I made a simple calculator from a youtube tutorial and fortunately I’ve successfully made it. Here is the code

main.xml:-

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="top|center">

    <ImageView
        android:layout_height="120dp"
        android:layout_width="120dp"
        android:src="@drawable/cal"/>

    <EditText
        android:layout_width="wrap_content"
        android:inputType="number"
        android:layout_height="wrap_content"
        android:ems="10"
        android:layout_marginTop="10dp"
        android:gravity="center"
        android:hint="@string/fstval"
        android:id="@+id/etFirstValue"/>

    <EditText
        android:layout_width="wrap_content"
        android:inputType="number"
        android:layout_height="wrap_content"
        android:ems="10"
        android:layout_marginTop="10dp"
        android:gravity="center"
        android:hint="@string/sndval"
        android:id="@+id/etSecondValue"/>

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:layout_marginTop="10dp"
        android:gravity="center"
        android:hint="@string/ans"
        android:textColorHint="#FF0F00"
        android:id="@+id/tvAns"/>

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/add"
        android:layout_marginTop="19dp"
        android:layout_marginRight="10dp"
        android:layout_marginLeft="10dp"
        android:background="#4C5866"
        android:padding="10dp"
        android:textColor="#000000"
        android:textSize="25sp"
        android:id="@+id/btnAdd"
        android:onClick="btnadd"/>

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/sub"
        android:layout_marginRight="10dp"
        android:layout_marginLeft="10dp"
        android:background="#677789"
        android:padding="10dp"
        android:layout_marginTop="5dp"
        android:textColor="#000000"
        android:textSize="25sp"
        android:id="@+id/btnSubtract"
        android:onClick="btnsub"/>

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/mul"
        android:layout_marginRight="10dp"
        android:layout_marginLeft="10dp"
        android:background="#405163"
        android:padding="10dp"
        android:layout_marginTop="5dp"
        android:textColor="#000000"
        android:textSize="25sp"
        android:id="@+id/btnMultiply"
        android:onClick="btnmul"/>

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/div"
        android:layout_marginRight="10dp"
        android:layout_marginLeft="10dp"
        android:background="#19E6B1"
        android:padding="10dp"
        android:layout_marginTop="5dp"
        android:textColor="#000000"
        android:id="@+id/btnDivide"
        android:textSize="25sp"
        android:onClick="btndiv"/>

    

</LinearLayout>

mainactivity.java:-

    package com.mycompany.myapp;

import android.app.*;
import android.os.*;
import android.widget.*;
import android.view.View.*;
import android.view.*;

public class MainActivity extends Activity 
{
    
    
    private EditText etn1;  
    private EditText etn2;
    private TextView tvResult;
    private Button btnadd , btnsub , btnmul , btndiv;
    
    
    
    
    
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        etn1 = findViewById(R.id.etFirstValue);
        etn2 = findViewById(R.id.etSecondValue);
        tvResult = findViewById(R.id.tvAns);
        
        
        Button btnadd = findViewById(R.id.btnAdd);  
        btnadd.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                    
                    int n1 = Integer.parseInt(etn1.getText().toString());
                    int n2 = Integer.parseInt(etn2.getText().toString());

                    int add = n1 + n2;

                    tvResult.setText(String.valueOf(add));
                }
            
        
            
        });
        
        Button btnsub = findViewById(R.id.btnSubtract);  
        btnsub.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {

                    int n1 = Integer.parseInt(etn1.getText().toString());
                    int n2 = Integer.parseInt(etn2.getText().toString());

                    int add = n1 - n2;

                    tvResult.setText(String.valueOf(add));
                }



            });
        Button btnmul = findViewById(R.id.btnMultiply);  
        btnmul.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {

                    int n1 = Integer.parseInt(etn1.getText().toString());
                    int n2 = Integer.parseInt(etn2.getText().toString());

                    int add = n1 * n2;

                    tvResult.setText(String.valueOf(add));
                }



            });
        Button btndiv = findViewById(R.id.btnDivide);  
        btndiv.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {

                    int n1 = Integer.parseInt(etn1.getText().toString());
                    int n2 = Integer.parseInt(etn2.getText().toString());

                    int add = n1 / n2;

                    tvResult.setText(String.valueOf(add));
                }



            });
        
        
        
    

            
        
        

    }

}

But the problem is when I don’t put any value into the firstEditText or secondEditText or both of them and click on any button the app crashes and a pop up shows “myapp keeps stopping”. I want something like ” Please enter a value” shows on the blank EditText when I don’t put any value to any of EditText. Help me please

Advertisement

Answer

Your app is crashing because when you don’t enter any value and tap on buttons, it tries to parse an empty string to int which leads to a NumberFormatException and crashes your app. However, you can first check if your edit texts are empty or not before parsing them, and show a toast or a snackbar if they are empty.

Use this

 String number1 = etn1.getText().toString();
 String number2 = etn2.getText().toString();
 if(number1.isBlank() || number2.isBlank()){
     Toast.makeText(this, "Please enter a value", Toast.LENGTH_LONG).show();
} else {

 int n1 = Integer.parseInt(number1);
 int n2 = Integer.parseInt(number2);

 int add = n1 + n2;

 tvResult.setText(String.valueOf(add));
}
User contributions licensed under: CC BY-SA
9 People found this is helpful
Advertisement