Android:Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference

Viewed 262

I am new to Android and I am trying to make a registration portal. But I keep getting this error

Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference

Register.java:

package com.example.trackandtrigger;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

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

import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class register extends AppCompatActivity {
    final String valid_email = "^[\\w!#$%&'*+/=?`{|}~^-]+(?:\\.[\\w!#$%&'*+/=?`{|}~^-]+)*@(?:[a- 
zA-Z0-9-]+\\.)+[a-zA-Z]{2,6}$";
    final String valid_password = "^(?=.*[A-Za-z])(?=.*\\d)(?=.*[@$!%*#?&])[A-Za-z\\d@$!%*#?&] 
{8,}$";//Minimum eight characters, at least one letter, one number and one special character
    final String valid_phone = "^\\d{10}$";
    final Pattern mail = Pattern.compile(valid_email);
    final Pattern pass = Pattern.compile(valid_password);
    final Pattern phno = Pattern.compile(valid_phone);
    EditText mFullName,mEmail,mPassword,mPhone;
    Button mRegisterBtn;
    TextView mLoginBtn;
    FirebaseAuth fAuth;
    ProgressBar progressBar;

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

        mFullName   =   findViewById(R.id.FullName);
        mEmail      =   findViewById(R.id.Email);
        mPassword   =   findViewById(R.id.Password);
    mPhone      =   findViewById(R.id.Phone);
    mRegisterBtn=   findViewById(R.id.Regbtn);
    mLoginBtn   =   findViewById(R.id.Login);

    fAuth=FirebaseAuth.getInstance();
    progressBar=findViewById(R.id.progressBar);

    mRegisterBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String email = mEmail.getText().toString().trim();
            String password = mPassword.getText().toString();
            String phone=mPhone.getText().toString();

            Matcher mat1=mail.matcher(email);
            Matcher mat2=pass.matcher(password);
            Matcher mat3=phno.matcher(phone);

            if(!mat1.matches()) {
                mEmail.setError("Enter valid Email");
                return;
            }

            else if(!mat2.matches()) {
                mPassword.setError("Minimum 8 characters, at least 1 letter, 1 number and 1 special character");
                return;
            }

            else if(!mat3.matches()) {
                mPhone.setError("Enter 10 digit phone no.");
                return;
            }
            else {

                progressBar.setVisibility(View.VISIBLE);
            }
        }
    });
}
}

activity_register.xml:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/app_back"
android:textAlignment="center"
tools:context=".register">

<TextView
    android:id="@+id/editTextTextPersonName"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="150dp"
    android:layout_marginEnd="150dp"
    android:layout_marginBottom="200dp"
    android:ems="10"
    android:fontFamily="@font/alegreya_bold"
    android:inputType="textPersonName"
    android:text="T&amp;T APP"
    android:textAlignment="center"
    android:textColor="#000000"
    android:textSize="30sp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.502"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.093" />

<TextView
    android:id="@+id/editTextTextPersonName2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="83dp"
    android:layout_marginTop="32dp"
    android:layout_marginEnd="81dp"
    android:layout_marginBottom="128dp"
    android:ems="10"
    android:inputType="textPersonName"
    android:text="Create new Account"
    android:textAlignment="center"
    android:textSize="18sp"
    app:layout_constraintBottom_toTopOf="@+id/FullName"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.488"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/editTextTextPersonName" />

<EditText
    android:id="@+id/FullName"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="16dp"
    android:layout_marginTop="128dp"
    android:layout_marginEnd="16dp"
    android:background="@color/black"
    android:ems="10"
    android:hint="Full Name"
    android:inputType="textPersonName"
    android:padding="10dp"
    android:textColor="#FFFFFF"
    android:textColorHint="#FFFFFF"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.498"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/editTextTextPersonName2" />

<EditText
    android:id="@+id/Email"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="16dp"
    android:layout_marginTop="20dp"
    android:layout_marginEnd="16dp"
    android:background="@color/black"
    android:ems="10"
    android:hint="Email"
    android:inputType="textPersonName"
    android:padding="10dp"
    android:textColor="#FFFFFF"
    android:textColorHint="#FBFBFB"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.498"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/FullName" />

<EditText
    android:id="@+id/Password"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="14dp"
    android:layout_marginTop="14dp"
    android:layout_marginEnd="14dp"
    android:background="@color/black"
    android:ems="10"
    android:hint="Password"
    android:inputType="textPersonName"
    android:padding="10dp"
    android:textColor="#FFFFFF"
    android:textColorHint="#FFFFFF"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.498"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/Email" />

<EditText
    android:id="@+id/Phone"
    android:layout_width="wrap_content"
    android:layout_height="48dp"
    android:layout_marginStart="16dp"
    android:layout_marginTop="20dp"
    android:layout_marginEnd="16dp"
    android:background="@color/black"
    android:ems="10"
    android:hint="Phone Number"
    android:inputType="textPersonName"
    android:textColor="#FFFFFF"
    android:textColorHint="#FFFFFF"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.498"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/Password" />

<Button
    android:id="@+id/Regbtn"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="120dp"
    android:layout_marginTop="31dp"
    android:layout_marginEnd="121dp"
    android:text="Register"
    app:backgroundTint="#ED4E4E"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.503"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/Phone" />

<TextView
    android:id="@+id/Login"
    android:layout_width="200dp"
    android:layout_height="40dp"
    android:layout_marginStart="95dp"
    android:layout_marginEnd="96dp"
    android:ems="10"
    android:inputType="textPersonName"
    android:text="Already Registered? Login Here"
    android:textAlignment="center"
    android:textSize="12sp"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/Regbtn" />

<ProgressBar
    android:id="@+id/progressBar"
    style="?android:attr/progressBarStyle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginStart="229dp"
    android:layout_marginTop="35dp"
    android:layout_marginEnd="228dp"
    android:visibility="invisible"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.0"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/Login" />
</androidx.constraintlayout.widget.ConstraintLayout>

The problem seems to be with Register Button(id:Regbtn). Please help me out.

2 Answers

I will suggest to start debugging and check if mRegisterBtn is being returned as null or is actively finding the related button on the layout.

mRegisterBtn=   findViewById(R.id.Regbtn);

It's a side effect due to the fact that you named your class register instead of Register. You need to have the same case between your filename and your class

  • Register.java -> public class Register / xml: tools:context=".Register"
  • register.java -> public class register / xml: tools:context=".register"

However it's still (mostly) recommended for code clarity/coding standards to keep java class uppercased

Related