ERROR android studio java.lang.NullPointerException

0

Attachment LOGCAT:

  

09-13 17: 16: 41.571 5041-5041 / com.example.usuario.guiach   E / AndroidRuntime: FATAL EXCEPTION: main                                                                             Process: com.example.usuario.guiach, PID: 5041                                                                             java.lang.RuntimeException: Unable to start activity   ComponentInfo {com.example.usuario.guiach / com.example.usuario.guiach.registro}:   java.lang.NullPointerException: Attempt to invoke virtual method 'void   android.view.View.setOnClickListener (android.view.View $ OnClickListener) '   on a null object reference

     

XML      

<TextView
    android:id="@+id/textView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="54dp"
    android:fontFamily="sans-serif"
    android:text="REGISTRAR DATOS"
    android:textAppearance="@style/TextAppearance.AppCompat.Button"
    android:textColor="@android:color/black"
    android:textSize="24sp"
    android:typeface="normal" />

<EditText
    android:id="@+id/nomb"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="41dp"
    android:ems="14"
    android:hint="Nombre"
    android:inputType="textPersonName"
    android:typeface="normal"
    android:layout_below="@+id/textView2"
    android:layout_centerHorizontal="true" />

<EditText
    android:id="@+id/tel"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:ems="14"
    android:hint="Teléfono "
    android:inputType="number"
    android:typeface="normal"
    android:layout_marginTop="20dp"
    android:layout_below="@+id/pass"
    android:layout_alignLeft="@+id/pass"
    android:layout_alignStart="@+id/pass" />

<EditText
    android:id="@+id/email"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="25dp"
    android:ems="14"
    android:hint="Email"
    android:inputType="textEmailAddress"
    android:layout_below="@+id/nomb"
    android:layout_alignLeft="@+id/nomb"
    android:layout_alignStart="@+id/nomb"
    android:layout_alignRight="@+id/nomb"
    android:layout_alignEnd="@+id/nomb" />

<EditText
    android:id="@+id/pass"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:ems="14"
    android:hint="Password"
    android:inputType="textPassword"
    android:layout_below="@+id/email"
    android:layout_alignLeft="@+id/email"
    android:layout_alignStart="@+id/email"
    android:layout_marginTop="19dp" />

<Button
    android:id="@+id/btnRG"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignEnd="@+id/tel"
    android:layout_alignLeft="@+id/tel"
    android:layout_alignRight="@+id/tel"
    android:layout_alignStart="@+id/tel"
    android:layout_below="@+id/tel"
    android:layout_marginTop="42dp"
    android:background="@color/colorPrimary"
    android:elevation="2dp"
    android:ems="14"
    android:text="REGISTRAR"
    android:textAppearance="@style/TextAppearance.AppCompat.Button"
    android:textColor="@android:color/white"
    android:textSize="18sp" />

CLASS WHERE THE ERROR IS GENERATED:

public class registro extends AppCompatActivity {

    private EditText nombre,email,password,telefono;
    private Button Registro;

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

        nombre = (EditText)  findViewById(R.id.nomb);
        email = (EditText) findViewById(R.id.email);
        password = (EditText) findViewById(R.id.pass);
        telefono = (EditText) findViewById(R.id.tel);


         Registro = (Button)findViewById(R.id.btnaccess);

        Registro.setOnClickListener(new View.OnClickListener() {  //conflicto al pulsar el boton
            @Override
            public void onClick(View view) {
                final String Nombre = nombre.getText().toString();
                final String Email = email.getText().toString();
                final String Password = password.getText().toString();
                final String Telefono = telefono.getText().toString();

                Response.Listener<String>respoListener = new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {

                        try {
                            JSONObject jsonObject = new JSONObject(response);
                            boolean SUCCESS = jsonObject.getBoolean("success");//capturar la respuesta del php

                            if (SUCCESS){

                                Intent intent = new Intent(registro.this, MainActivity.class);
                                startActivity(intent);

                            }
                            else{

                                //  Toast.makeText(getApplicationContext(),"Error"+ jsonObject.getString("error"),Toast.LENGTH_SHORT).show();

                                AlertDialog.Builder builder = new AlertDialog.Builder(registro.this);
                                builder.setMessage("Error de registro")
                                        .setNegativeButton("Retry", null)
                                        .create().show();

                            }


                        } catch (JSONException e) {
                            e.printStackTrace();
                        }

                    }
                };

                registroRequest registroRequest = new registroRequest(Nombre, Email, Password, Telefono,respoListener);

                RequestQueue queue = Volley.newRequestQueue(registro.this);
                queue.add(registroRequest);

            }
        });


    }

}

XML MAIN ACTIVITY:

<EditText
    android:id="@+id/email"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginBottom="26dp"
    android:ems="14"
    android:hint="Ingresar correo"
    android:inputType="textEmailAddress"
    android:typeface="normal"
    tools:layout_editor_absoluteX="75dp"
    tools:layout_editor_absoluteY="80dp"
    android:layout_above="@+id/pass"
    android:layout_centerHorizontal="true" />

<EditText
    android:id="@+id/pass"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:ems="14"
    android:hint="Ingresar contraseña "
    android:inputType="textPassword"
    android:typeface="normal"
    android:layout_centerVertical="true"
    android:layout_alignLeft="@+id/email"
    android:layout_alignStart="@+id/email" />

<Button
    android:id="@+id/btnaccess"
    style="@style/Widget.AppCompat.Button.Small"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignEnd="@+id/pass"
    android:layout_alignLeft="@+id/pass"
    android:layout_alignRight="@+id/pass"
    android:layout_alignStart="@+id/pass"
    android:layout_below="@+id/pass"
    android:layout_marginTop="24dp"
    android:background="@color/colorPrimary"
    android:text="INICIAR SESIÓN"
    android:textAppearance="@style/TextAppearance.AppCompat.Button"
    android:textColor="@android:color/white"
    android:textColorLink="@color/colorAccent"
    android:textSize="18sp" />

<Button

    android:id="@+id/btnreg"
    style="@style/Widget.AppCompat.Button.Small"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignEnd="@+id/btnaccess"
    android:layout_alignLeft="@+id/btnaccess"
    android:layout_alignRight="@+id/btnaccess"
    android:layout_alignStart="@+id/btnaccess"
    android:layout_below="@+id/btnaccess"
    android:layout_marginTop="14dp"
    android:background="?android:attr/colorPrimaryDark"

    android:text="REGISTRAR"
    android:textAppearance="@style/TextAppearance.AppCompat.Button"
    android:textColor="@android:color/background_light"
    android:textSize="18sp" />

MAIN ACTIVITY CLASS

public class MainActivity extends AppCompatActivity {

    private EditText correo, contra;
    private Button Acceso, registro;

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

        correo = (EditText) findViewById(R.id.email);
        contra = (EditText)findViewById(R.id.pass);

        Acceso = (Button) findViewById(R.id.btnaccess);
       registro = (Button) findViewById(R.id.btnreg);

       registro.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                Intent regist = new Intent(MainActivity.this,registro.class);
                MainActivity.this.startActivity(regist);

            }
        });

        Acceso.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                final String Email = correo.getText().toString();
                final String Password = contra.getText().toString();

                Response.Listener<String>responseListener = new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        try {
                            JSONObject jsonObject = new JSONObject(response);
                            boolean SUCCESS = jsonObject.getBoolean("success");


                            if (SUCCESS){

                                Toast.makeText(getApplicationContext(),"ACCESO CONCEDIDO" + jsonObject.getString("success"),Toast.LENGTH_SHORT).show();

                                String Nombre = jsonObject.getString("Nombre");
                                String  Telefono = jsonObject.getString("Telefono");

                                Intent intent = new Intent(MainActivity.this,inicio.class); //enviar los datos de la consulta a la bd al otro activity mendiante el intent
                                intent.putExtra("Nombre", Nombre);
                                intent.putExtra("Email", Email);
                                intent.putExtra("Password", Password);
                                intent.putExtra("Telefono", Telefono);

                                MainActivity.this.startActivity(intent);



                            }
                            else {

                               Toast.makeText(getApplicationContext(),"Error de Acceso"+ jsonObject.getString("error"),Toast.LENGTH_SHORT).show();

                            /* AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                                builder.setMessage("Error de Acceso")
                                        .setNegativeButton("Retry", null)
                                        .create().show();*/

                            }

                        } catch (JSONException e) {
                            e.printStackTrace();
                        }


                    }
                };

                LoginRequest loginRequest = new LoginRequest(Email, Password, responseListener );
                RequestQueue queue = Volley.newRequestQueue(MainActivity.this);
                queue.add(loginRequest);


            }
        });
    }
}
    
asked by Esteban Jiménez 13.09.2017 в 23:32
source

1 answer

0

The Button with the id R.id.btnaccess exists in the view R.layout.activity_main , not in the view R.layout.activity_registro of activity registro so it throws you NullPointerException :

public class registro extends AppCompatActivity {

    private EditText nombre,email,password,telefono;
    private Button Registro;

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

        //...

        // este boton no esta defindo en la vista R.layout.activity_registro
        Registro = (Button)findViewById(R.id.btnaccess); 

        // como no existe, el sistema lanza el error porque no se puede asignar
        // un evento sobre un objeto null
        Registro.setOnClickListener(new View.OnClickListener() 

So you have to define a Button with the id R.id.btnaccess or you eliminate the assignment of the event.

    
answered by 14.09.2017 / 03:40
source