有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

安卓 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) 个答案

  1. # 1 楼答案

    getValue(Long.class)返回null,这意味着您要查找的数据库位置没有数据。您必须检查这个案例,并决定当您的查询找不到您要查找的内容时该怎么做