多级用户登录-Android Studio / Firebase

时间:2018-10-09 00:52:20

标签: java android firebase firebase-realtime-database

因此,我正在尝试为Android Studio创建一个多级用户登录页面,我有一个有效的基本登录名。我向数据库添加了用户级别,但是我的应用程序不断崩溃。我正在使用Android Studio和Firebase作为后端。

Login.Class

private void checkUserType() {

    DatabaseReference databaseReference = firebaseDatabase.getReference().child("Users").child(firebaseAuth.getUid());
    databaseReference.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            UserProfile userProfile = dataSnapshot.getValue(UserProfile.class);
            int userType = (userProfile.getUsertype());

            switch (userType) {
                case 0:
                    startActivity(new Intent(Login.this, DoctorActivity.class));
                    break;
                case 1:
                    startActivity(new Intent(Login.this, MainActivity.class));
                    break;
            }
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {}
    });
}

这是我的数据库的样子:

This is what my database looks like.

Logcat:

  

进程:com.example.trixiavillarama.hope,PID:5524       java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法'com.google.firebase.database.DatabaseReference com.google.firebase.database.FirebaseDatabase.getReference()'           在com.example.trixiavillarama.hope.Login.checkUserType(Login.java:124)           在com.example.trixiavillarama.hope.Login.checkEmailVerification(Login.java:116)           at com.example.trixiavillarama.hope.Login.access $ 300(Login.java:26)           在com.example.trixiavillarama.hope.Login $ 4.onComplete(Login.java:91)           在com.google.android.gms.tasks.zzj.run(未知来源:23)           在android.os.Handler.handleCallback(Handler.java:873)           在android.os.Handler.dispatchMessage(Handler.java:99)           在android.os.Looper.loop(Looper.java:193)           在android.app.ActivityThread.main(ActivityThread.java:6669)           在java.lang.reflect.Method.invoke(本机方法)           在com.android.internal.os.RuntimeInit $ MethodAndArgsCaller.run(RuntimeInit.java:493)           在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

1 个答案:

答案 0 :(得分:0)

您遇到以下错误:

  

java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法'com.google.firebase.database.DatabaseReference com.google.firebase.database.FirebaseDatabase.getReference()'

由于您的firebaseDatabase对象是null,因此您忘记了对其进行初始化。要解决此问题,请添加以下代码行:

FirebaseDatabase firebaseDatabase = FirebaseDatabase.getInstance();

在下面的代码行之前:

DatabaseReference databaseReference = firebaseDatabase.getReference().child("Users").child(firebaseAuth.getUid());