Firebase数据库空对象参考

被忽视的理智:

我正在尝试从Firebase数据库获取一个简单的数字。我有一个名为“关注者”的数据库,其结构类似于...

followers: {
    {userID}: {
        count: 5,
        users: { {userID}: true, ... }
    },
    ...
}

简单的权利。因此,我想获取“计数”对象,并避免在该“ userID”不存在时引用空对象。因此,我为此设置了一个非常简单的(或至少我以为是)设置...

DatabaseReference followersDB = FirebaseDatabase.getInstance().getReference("followers").child(user.getUid()).child("count");
followersDB.addListenerForSingleValueEven(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        if(dataSnapshot != null) {
            int followersCount = dataSnapshot.getValue(Integer.class);
            //put value in view;
        } else  {
            //put 0 in view
        }
    }
});

有人会认为“ if(dataSnapshot!= null)”将停止获取空值引用,但是当我在模拟器中运行我的应用程序时,会得到...

java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法'int java.lang.Integer.intValue()'

如果我正在测试“ if(dataSnapshot!= null)”,为什么仍给我一个空对象引用?有没有可能在分配值之前检查该值是否存在的方法?我以为如果就足够了,但显然还不够。感谢您的时间和帮助。

尤努斯·库利耶夫(Yunus Kulyyev):

这样做:

DatabaseReference followersDB = FirebaseDatabase.getInstance().getReference("followers").child(user.getUid());
    followersDB.addListenerForSingleValueEven(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            if(dataSnapshot.child("users").exists()) {
                int followersCount = dataSnapshot.child("count").getValue(Integer.class);
                //put value in view;
            } else  {
                //put 0 in view
            }
        }
    });

该代码表示​​如果您有任何关注者,请检查您的关注者数量

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章