I have a question about Android Studio

2

Why when I put num2 = calificacion.getText().toString() and num3 =Double.parseDouble(num2) where it is shown in the code gives me error; but when I put it before the If the program works for me without problems? Thanks for your time.

package com.alumno.calificacion;


import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

private EditText alumno;
private EditText calificacion;
private Button comprobar;
private Button limpiar;
private TextView salida;
private String nota;
private Double num3;
private String num2;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    alumno = (EditText) findViewById(R.id.InAlumno);
    calificacion= (EditText) findViewById(R.id.InCalificacion);
    comprobar= (Button) findViewById(R.id.btnComprobar);
    limpiar= (Button) findViewById(R.id.btnLimpiar);
    salida = (TextView) findViewById(R.id.Error);
    num2 = calificacion.getText().toString();
    num3 =Double.parseDouble(num2);

    comprobar.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //aqui es donde me refiero 
            if(num3 >=0 && num3 <=10.5)
                nota = "Malo";
            else if(num3 >10 && num3 <=14)
                nota="Regular";
            else if(num3 >15 && num3 <=18)
                nota="Bueno";
            else if (num3 >19 && num3 <=20)
                nota="Excelente";

            salida.setText("El alumno "+nota);
        }
    });

    limpiar.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            alumno.setText("");
            calificacion.setText("");
            salida.setText("");
        }
    });

}
}
    
asked by Hello There 26.10.2018 в 12:26
source

2 answers

1

The error is that when you read the value of EditText calificacion there is nothing and returns null, which causes error when doing a Double.parseDouble . As you say, you'll have to put that code in onClick(View v)

    
answered by 26.10.2018 / 12:35
source
2

In the onCreate() note that your EditText rating contains nothing (is null). And getting a getText() gives you a null pointer exception.

Likewise, in addition to what Javi Mollá has said, I would assure you that your EditText qualification has a value or if not, again, it will return it as null.

    
answered by 26.10.2018 в 12:48