I am building app for my daughter for math Everything is working great - add, multiply, divide, between, ascending, etc
but in subtract it loads first time, for second time app get's hang - I have to directly exits it, clear it from ram and restart it every time
log cat is not showing any error or evening warning, please guide me - I am beginner (actually first app)
my code
    package youtube.computers.mohammedi.kidsmath;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.TextView;
    import android.widget.Toast;
    import com.google.android.gms.ads.AdRequest.Builder;
    import com.google.android.gms.ads.AdView;
    import java.util.Random;
    public class Subtract extends GlobalOverride implements OnClickListener {
        int ans;
        Button btn1;
        Button btn2;
        Button btn3;
        Button btn4;
        int max;
        int n1;
        int n2;
        Random f16r;
        int temp;
        TextView txt_add;
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView((int) R.layout.activity_subtract);
        setTitle("Subtraction");
        this.btn1 =  findViewById(R.id.btn1);
        this.btn2 =  findViewById(R.id.btn2);
        this.btn3 =  findViewById(R.id.btn3);
        this.btn4 =  findViewById(R.id.btn4);
        this.txt_add = (TextView) findViewById(R.id.txt_ascen);
        this.btn1.setOnClickListener(this);
        this.btn2.setOnClickListener(this);
        this.btn3.setOnClickListener(this);
        this.btn4.setOnClickListener(this);
        this.max = getSharedPreferences("Math", 0).getInt("add", 10);
        ((AdView) findViewById(R.id.adView)).loadAd(new Builder().build());
        generate();
    }
    public void onClick(View v) {
        this.ans = Integer.parseInt((String) ((Button) v).getText());
        if (this.ans == this.temp) {
            generate();
        } else {
            Toast.makeText(this, "Incorrect", Toast.LENGTH_SHORT).show();
        }
    }
    public void generate() {
        this.n1 = GlobalOverride.getRand(1, this.max);
        this.n2 = GlobalOverride.getRand(1, this.max);
        if(n2>n1 && max<=20){
            generate();
        }
        this.temp = this.n1 - this.n2;
        this.txt_add.setText(this.n1 + " - " + this.n2 + " = ?");
        int[] answer = new int[4];
        int count = 0;
        while (count <= 3) {
            int random_integer = GlobalOverride.getRand(this.temp - 2, this.temp + 2);
            if (!exists(random_integer, answer)) {
                answer[count] = random_integer;
                count++;
            }
        }
        if (!exists(this.temp, answer)) {
            answer[GlobalOverride.getRand(0, 3)] = this.temp;
        }
        this.btn1.setText(String.valueOf(answer[0]));
        this.btn2.setText(String.valueOf(answer[1]));
        this.btn3.setText(String.valueOf(answer[2]));
        this.btn4.setText(String.valueOf(answer[3]));
    }
    public boolean exists(int number, int[] array) {
        if (number == -1) {
            return true;
        }
        for (int i : array) {
            if (number == i) {
                return true;
            }
        }
        return false;
        }
    }
GlobalOverride Class.
package youtube.computers.mohammedi.kidsmath;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.MenuItem;
import java.net.InetAddress;
public class GlobalOverride extends AppCompatActivity {
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        if (id == R.id.action_levels) {
            startActivity(new Intent(this, Levels.class));
        }
        if (id == R.id.action_contact) {
            startActivity(new Intent(this, Contact.class));
        }
        return super.onOptionsItemSelected(item);
    }
    protected static int getRand(int lower, int upper) {
        return ((int) (Math.random() * ((double) ((upper + 1) - lower)))) + lower;
    }
    public boolean isInternetAvailable() {
        try {
            if (InetAddress.getByName("google.com").equals("")) {
                return false;
            }
            return true;
        } catch (Exception e) {
            return false;
        }
    }
}
Layout Output

 
     
    