返回null值的数据快照

2022-01-30 15:11:51 标签 androidfirebase-realtime-database

我使用两个事件监听器,一个在另一个内部。第一个是检查用户是否在数据库中,第二个是显示数据库中的用户数量。

Query queries=database.child("songs").orderByChild("user").equalTo(userauth.getEmail());
ValueEventListener eventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        if(!dataSnapshot.exists()) {
            //create new user
            database.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                    if (dataSnapshot.exists()) {
                        numOfUsers = dataSnapshot.child("users").getValue(int.class);
                        userinfo.setText(String.valueOf(numOfUsers));
                    }
                }
                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {
                }
            });
        }
    }
    @Override
    public void onCancelled(DatabaseError databaseError) {}
};
queries.addValueEventListener(eventListener);

但我一直得到这个错误:


java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.Integer.intValue()' on a null object reference
    at com.example.passiveincome.RegistrationActivity$1$1.onDataChange(RegistrationActivity.java:76)
    at com.google.firebase.database.core.ValueEventRegistration.fireEvent(ValueEventRegistration.java:75)
    at com.google.firebase.database.core.view.DataEvent.fire(DataEvent.java:63)
    at com.google.firebase.database.core.view.EventRaiser$1.run(EventRaiser.java:55)
    at android.os.Handler.handleCallback(Handler.java:873)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:193)
    at android.app.ActivityThread.main(ActivityThread.java:6669)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

这是我的数据库的一张图片:

我显然有一个字段“users”,其中包含整数。那我哪里错了?

###问题在于:

Query queries=database.child("songs").orderByChild("user").equalTo(userauth.getEmail());

在数据库的根目录中没有节点歌曲,因此database。child("songs")不匹配任何节点。

也没有儿童财产使用者。我假设您正在寻找用户(复数),但数据库无法知道这一点。

你的查询需要是:

database = FirebaseDatabase.getInstance().getReference();
Query queries=database.orderByChild("users").equalTo(0);
阅读全文

▼ 版权说明

相关文章也很精彩
推荐内容
更多标签
相关热门
全站排行
随便看看

错说 cuoshuo.com —— 程序员的报错记录

部分内容根据CC版权协议转载;网站内容仅供参考,生产环境使用务必查阅官方文档

辽ICP备19011660号-5

×

扫码关注公众号:职场神器
发送: 1
获取永久解锁本站全部文章的验证码