安卓 Firebase空对象引用“long java.lang.long.longValue()”
我正在创建一个具有不同用户级别(例如管理员、普通用户)的应用程序。根据用户的级别,将启动不同的活动。1是管理员,2是普通用户。由MenuActivity
启动的AdminMenuActivity
不会。
我得到的错误如下
java.lang.NullPointerException: Attempt to invoke virtual method 'long java.lang.Long.longValue()' on a null object reference at com.example.login.MainActivity$1.onDataChange(MainActivity.java:63)
在过去的几天里,我一直在努力解决这个问题,但我无法解决这个问题。代码和数据库如下所示
代码
public void selectUser(){
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference uidRef = rootRef.child("Users").child(uid);
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.child("role").getValue(Long.class) == 1) {
startActivity(new Intent(MainActivity.this , AdminMenuActivity.class));
}
else if (dataSnapshot.child("role").getValue(Long.class) == 2) {
startActivity(new Intent(MainActivity.this , MenuActivity.class));
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
throw databaseError.toException();
}
};
uidRef.addListenerForSingleValueEvent(valueEventListener);
}
更新了数据库
{ "Users" : {
"H7BKqKwLGTP0qTlL1p2JqFezjWu2" : {
"email" : "hello@hotmail.com",
"preference" : "rugby",
"role" : 2
},
"WSBNdlu7ngbyMo2jILR2qE1ZUR32" : {
"email" : "1234@gmail.com",
"preference" : "rugby",
"role" : 1
}
},
"roles" : {
"uid1" : "admin",
"uid2" : "general"
}
}
# 1 楼答案
getValue(Long.class)
返回null,这意味着您要查找的数据库位置没有数据。您必须检查这个案例,并决定当您的查询找不到您要查找的内容时该怎么做