【发布时间】:2018-12-24 16:10:25
【问题描述】:
在引用我的 Firebase 数据库时,我经常遇到这个问题。我认为数据实际上无法从数据库接收数据存在问题,或者当它在那里执行第一段代码时,在获得 UID 之前它实际上并没有用户。但我不完全确定。
java.lang.NullPointerException:尝试调用虚拟方法 'com.google.firebase.database.DatabaseReference com.apex.quotable.managers.DatabaseHelper.getDatabaseReference()' 空对象引用 在 com.apex.quotable.managers.ProfileManager.isProfileExist(ProfileManager.java:61) 在 com.apex.quotable.activities.LoginActivity.checkIsProfileExist(LoginActivity.java:117) 在 com.apex.quotable.activities.LoginActivity.access$500(LoginActivity.java:30) 在 com.apex.quotable.activities.LoginActivity$4.onAuthStateChanged(LoginActivity.java:84) 在 com.google.firebase.auth.zzl.run(未知来源:24) 在 android.os.Handler.handleCallback(Handler.java:790) 在 android.os.Handler.dispatchMessage(Handler.java:99) 在 android.os.Looper.loop(Looper.java:164) 在 android.app.ActivityThread.main(ActivityThread.java:6494) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
那么,就是说错误来自这里:
checkIsProfileExist(user.getUid());
那么,
private void checkIsProfileExist(final String userId) {
ProfileManager.getInstance(this).isProfileExist(userId, new OnObjectExistListener<Profile>() {
@Override
public void onDataChanged(boolean exist) {
if (!exist) {
startCreateProfileActivity();
} else {
PreferencesUtil.setProfileCreated(LoginActivity.this, true);
DatabaseHelper.getInstance(LoginActivity.this.getApplicationContext())
.addRegistrationToken(FirebaseInstanceId.getInstance().getToken(), userId);
}
hideProgress();
finish();
}
});
}
然后
public void isProfileExist(String id, final OnObjectExistListener<Profile> onObjectExistListener) {
DatabaseReference databaseReference = databaseHelper.getDatabaseReference().child("profiles").child(id);
databaseReference.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
onObjectExistListener.onDataChanged(dataSnapshot.exists());
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
【问题讨论】:
-
您是否使用调试器逐步完成此操作?
-
databaseHelper是null。
标签: java android firebase firebase-realtime-database firebase-authentication