因此,我正在尝试为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) {}
});
}
这是我的数据库的样子:
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)
答案 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());