android - 数据快照返回空值
问题描述
我正在使用两个事件侦听器,一个在另一个内部。首先是检查用户是否在数据库中,其次是显示数据库中的用户数。
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)
这是我的数据库的图片:
我显然有一个包含整数的“用户”字段。那我哪里错了?
解决方案
问题在这里:
Query queries=database.child("songs").orderByChild("user").equalTo(userauth.getEmail());
songs
数据库的根没有节点,所以database.child("songs")
不匹配任何节点。
也没有子属性user
。我假设您正在寻找users
(复数),但数据库无法知道这一点。
您的查询需要是:
database = FirebaseDatabase.getInstance().getReference();
Query queries=database.orderByChild("users").equalTo(0);
推荐阅读
- javascript - 包括 AngularJS 和 ASP.NET MVC
- node.js - 用于 socket-io 适配器的到 Redis 实例的 SSL 连接
- css - CSS flexbox 和 flex 1 的旋转输入范围
- python - 如何在 Odoo 中安装硒?
- linux - 有没有办法将参数传递给 .bin 文件的执行?
- pandas - 过去 n 天的滚动计数
- node.js - TypeScript 似乎没有检查类实例属性的类型
- go - 打开文件失败:解析时出现意外错误:读取数据失败。父错误:binary.Read:无效类型 uint32
- android - 如何将我从图库中挑选的照片设置为纵向?
- android - Firebase AuthStateListener 太慢了