I'm encountering some bug that I have no idea why and how to fix it. I'm just a beginner at android and firebase. I'm working on an assignment that would do a student information system.
Here is my codes
import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import android.app.DatePickerDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.nfc.Tag;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.ProgressBar;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Spinner;
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 com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.HashMap;
public class Register extends AppCompatActivity {
long maxId = 0;
private FirebaseDatabase db = FirebaseDatabase.getInstance();
private DatabaseReference databaseReference = db.getReference();
private FirebaseAuth mAuth;
private ProgressBar progressBar;
private static final String TAG = "Register";
private TextView mDisplayDate;
private DatePickerDialog.OnDateSetListener mDateSetListener;
RadioButton radioButton;
RadioButton radios;
String yearlevel;
String semester;
String SEX;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
EditText id = findViewById(R.id.id);
EditText pass = findViewById(R.id.pass);
EditText confirm = findViewById(R.id.confirm);
EditText name = findViewById(R.id.name);
EditText num = findViewById(R.id.num);
EditText email =findViewById(R.id.email);
EditText course = findViewById(R.id.course);
progressBar = findViewById(R.id.progressBar);
RadioGroup sex = findViewById(R.id.sex);
Intent mainIntent = new Intent(Register.this,MainActivity.class);
RadioGroup group = findViewById(R.id.group);
Button button = findViewById(R.id.register);
mDisplayDate = findViewById(R.id.mDisplayDate);
Spinner spinner = findViewById(R.id.spinner);
String[] year = {"1ST YEAR","2ND YEAR","3RD YEAR","4TH YEAR"};
ArrayList<String> arrayList = new ArrayList<>(Arrays.asList(year));
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<>(this,R.layout.spinner_style,arrayList);
spinner.setAdapter(arrayAdapter);
mDisplayDate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Calendar cal = Calendar.getInstance();
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH);
int day = cal.get(Calendar.DAY_OF_MONTH);
DatePickerDialog dialog = new DatePickerDialog(
Register.this,
android.R.style.Theme_Holo_Light_Dialog_MinWidth,
mDateSetListener,
year,month,day);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
dialog.show();
}
});
mDateSetListener = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker datePicker, int year, int month, int day) {
month = month + 1;
Log.d(TAG, "onDateSet: mm/dd/yyy: " + month + "/" + day + "/" + year);
String date = month + "/" + day + "/" + year;
mDisplayDate.setText(date);
}
};
String bday = mDisplayDate.getText().toString();
databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if(snapshot.exists()){
maxId=(snapshot.getChildrenCount());
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String Confirm = confirm.getText().toString().trim();
String studID = id.getText().toString().trim();
String studPass = pass.getText().toString().trim();
String studName = name.getText().toString().trim();
String studNum = num.getText().toString().trim();
String studEmail = email.getText().toString().trim();
String studCourse = course.getText().toString().trim();
if(studID.isEmpty()){
id.setError("Please Enter your Student ID");
id.requestFocus();
return;
}
if(studName.isEmpty()){
name.setError("Please Enter your Full Name");
name.requestFocus();
return;
}
if(studNum.isEmpty()){
num.setError("Phone number is required!");
num.requestFocus();
return;
}
if(studCourse.isEmpty()){
course.setError("Please Enter your College Course");
course.requestFocus();
return;
}
if(studEmail.isEmpty()){
email.setError("Email is Required!");
email.requestFocus();
return;
}
if(studPass.isEmpty()){
pass.setError("Password is Required!");
pass.requestFocus();
return;
}
if(studPass.length()<6){
pass.setError("Password should be longer than 6 characters");
pass.requestFocus();
return;
}
if(!studPass.equals(Confirm)){
confirm.setError("Password do not match!");
return;
}
HashMap<String,String> userMap = new HashMap<>();
userMap.put("Birth Date",bday);
userMap.put("Student ID",studID);
userMap.put("Password",studPass);
userMap.put("Student Name",studName);
userMap.put("Phone Number",studNum);
userMap.put("Email Address",studEmail);
userMap.put("College Course",studCourse);
String Con;
int radioId = group.getCheckedRadioButtonId();
radioButton = findViewById(radioId);
Con = radioButton.getText().toString();
String Cons;
int radioId1 = sex.getCheckedRadioButtonId();
radios = findViewById(radioId1);
Cons = radios.getText().toString();
switch (Cons){
case "MALE":
SEX = "Male";
userMap.put("Sex",SEX);
break;
case "FEMALE":
SEX = "Female";
userMap.put("Sex",SEX);
break;
default:
break;
}
if(!radioButton.isChecked()){
Toast.makeText(Register.this,"Please choose a Semester",Toast.LENGTH_LONG).show();
group.requestFocus();
return;
}
if(!radios.isChecked()){
Toast.makeText(Register.this,"Please choose a Sex",Toast.LENGTH_LONG).show();
sex.requestFocus();
return;
}
switch (Con){
case "1ST SEMESTER":
semester = "1st Semester";
userMap.put("Semester",semester);
break;
case "2ND SEMESTER":
semester = "2nd Semester";
userMap.put("Semester",semester);
break;
default:
break;
}
String yearlvl = spinner.getSelectedItem().toString();
switch(yearlvl){
case "1ST YEAR":
yearlevel = "1st Year";
userMap.put("Year Level",yearlevel);
break;
case "2ND YEAR":
yearlevel = "2nd Year";
userMap.put("Year Level",yearlevel);
break;
case "3RD YEAR":
yearlevel = "3rd Year";
userMap.put("Year Level",yearlevel);
break;
case "4th YEAR":
yearlevel = "4th Year";
userMap.put("Year Level",yearlevel);
break;
default:
break;
}
databaseReference.push().setValue(userMap);
progressBar.setVisibility(View.VISIBLE);
*mAuth.createUserWithEmailAndPassword(studEmail,studPass)*.addOnCompleteListener(new
OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
Toast.makeText(Register.this,"REGISTERED SUCCESSFULLY",Toast.LENGTH_LONG).show();
progressBar.setVisibility(View.GONE);
startActivity(mainIntent);
}
});
}
});
}
}
I having an error at this line :
mAuth.createUserWithEmailAndPassword(studEmail,studPass).addOnCompleteListener(new OnCompleteListener<AuthResult>()
The error:
java.lang.NullPointerException: Attempt to invoke virtual method 'com.google.android.gms.tasks.Task com.google.firebase.auth.FirebaseAuth.createUserWithEmailAndPassword(java.lang.String, java.lang.String)' on a null object reference
I'm just trying to use Firebase Authentication with Email and Pass authentication. Any opinions are welcome. just newbie here. Thanks