I am new to Android Programming and i am following some tutorial and the tutorial is 1 year ago. i am stuck with this error i think the problem is related to the database but i dont know anything yet about android.
PID: 23165
java.lang.NullPointerException: Attempt to invoke virtual method 'com.google.firebase.database.DatabaseReference com.google.firebase.database.DatabaseReference.child(java.lang.String)' on a null object reference
at com.example.fooddeliver.MainActivity.checkUserFromFirebase(MainActivity.java:101)
at com.example.fooddeliver.MainActivity.lambda$init$0$MainActivity(MainActivity.java:83)
at com.example.fooddeliver.-$$Lambda$MainActivity$9ehXip3aW7uFlecdkbtLT68AicY.onAuthStateChanged(Unknown Source:2)
at com.google.firebase.auth.zzj.run(com.google.firebase:firebase-auth@@19.3.1:2)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at com.google.android.gms.internal.firebase_auth.zzj.dispatchMessage(com.google.firebase:firebase-auth@@19.3.1:6)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7656)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
I/Process: Sending signal. PID: 23165 SIG: 9
my code is this.
Update i put my init because i dont know how to initialize userRef sorry for the newbie post
private void init() {
providers = Arrays.asList(new AuthUI.IdpConfig.PhoneBuilder().build());
firebaseAuth = FirebaseAuth.getInstance();
dialog = new SpotsDialog.Builder().setCancelable(false).setContext(this).build();
cloudFunctions = RetrofitCloudClient.getInstance().create(ICloudFunctions.class);
listener = firebaseAuth -> {
FirebaseUser user = firebaseAuth.getCurrentUser();
if(user != null)
{
checkUserFromFirebase(user);
}
else
{
phoneLogin();
}
};
}
private void checkUserFromFirebase(FirebaseUser user) {
dialog.show();
userRef.child(user.getUid())
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if(snapshot.exists())
{
Toast.makeText(MainActivity.this, "You are Already Registered", Toast.LENGTH_SHORT).show();
UserModel userModel = snapshot.getValue(UserModel.class);
goToHomeActivity(userModel);
}
else
{
showRegisterDialog(user);
}
dialog.dismiss();
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
dialog.dismiss();
Toast.makeText(MainActivity.this, ""+error.getMessage(), Toast.LENGTH_SHORT).show();
}
});
}