我在从 firebase 数据库中检索数据时遇到问题。数据以这种方式排列,在我的根引用节点中,我有一个子节点作为“FirstReply”,它有子节点作为消息 ID,对于每个消息 ID,有内部节点(推键)和值,如图所示。>
我想在每个PushID节点中检索子sellerID的值,并想和当前的userID进行比较,但是当我写这样的代码时
RootRef.child("FirstReply").child(Enquiry_MessageID).
addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
String returnSellerID= snapshot.child("sellerId").getValue().toString();
if(returnSellerID==current_user_Id) {
//my remaining code
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
我收到如下错误:
<块引用>java.lang.NullPointerException: 尝试在空对象引用上调用虚方法“java.lang.String java.lang.Object.toString()”
我的应用程序崩溃了。我可以在每个实例中都有 messageID 的值,但在每种情况下推送值都不同。我的问题有解决方案吗?
答案 0 :(得分:1)
您必须遍历您获得的 snapshot
的子节点:
RootRef.child("FirstReply").child(Enquiry_MessageID).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
for (DataSnapshot child: snapshot.getChildren()) { // ? loop over the child nodes
String returnSellerID = child.child("sellerId").getValue().toString();
if(returnSellerID.equals(current_user_Id)) { // ? use equals to compare strings
//my remaining code
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
throw error.toException(); // ? never ignore errors
}
});