【问题标题】:java.lang.NullPointerException on an opbject, but I'm not use which object [duplicate]对象上的 java.lang.NullPointerException,但我没有使用哪个对象 [重复]
【发布时间】: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) {

        }
    });
}

【问题讨论】:

  • 您是否使用调试器逐步完成此操作?
  • databaseHelpernull

标签: java android firebase firebase-realtime-database firebase-authentication


【解决方案1】:

您的databaseHelper 为空。在调用它的方法之前确保它有一个值。您在此处显示的代码不足,无法帮助我们了解您是否或何时期望它被分配,但这绝对是问题所在。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-10
    • 2021-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-30
    • 1970-01-01
    相关资源
    最近更新 更多