In my app I have a User class that stores user information, I save it to Firebase Realtime Database as follows:
mDbReference.child("UserData").child(getUser().getUid()).setValue(user);
Now in another part of the app I want to retrieve that User object, but the app crashes. It works if I use snapshot.getValue().toString() but I want to save it in an User object like below:
Query usernameQuery = fHelper.getDbReference().child("UserData")
.orderByChild("userName")
.equalTo(userCredentialEditText.getText().toString().trim());
usernameQuery.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
User user = (User) snapshot.getValue(User.class);
assert user != null;
Log.i("Snapshot", user.getUserEmail());
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
I get this error:
2021-04-19 22:40:34.769 15372-15372/com.outwire E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.outwire, PID: 15372
java.lang.NullPointerException: println needs a message
at android.util.Log.println_native(Native Method)
at android.util.Log.i(Log.java:176)
at com.outwire.login.LoginActivity$1.onDataChange(LoginActivity.java:173)
at com.google.firebase.database.Query$1.onDataChange(Query.java:191)
at com.google.firebase.database.core.ValueEventRegistration.fireEvent(ValueEventRegistration.java:75)
at com.google.firebase.database.core.view.DataEvent.fire(DataEvent.java:63)
at com.google.firebase.database.core.view.EventRaiser$1.run(EventRaiser.java:55)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:224)
at android.app.ActivityThread.main(ActivityThread.java:7565)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)
user.getUserEmail()is null?