【发布时间】:2021-05-31 03:39:38
【问题描述】:
我正在尝试使用 dataSnapshot 从 firebase 对象获取双精度,但每次尝试时,我都会收到一条错误消息,指出 java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.Double 并且当我尝试将其转换为 Long 以观察会发生什么时我收到此错误java.lang.ClassCastException: java.lang.Double cannot be cast to java.lang.Long,所以简而言之,错误反之亦然。这是我用来在 Firebase dataSnapshot 中获取总数的代码:
mDatabaseReference.child(mAuth.getCurrentUser().getUid()).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (!isPrinted) {
System.out.println("Children" + dataSnapshot.getChildrenCount());
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
Double price = (Double) snapshot.child("total").getValue();
System.out.println("Price: " + String.valueOf(price));
}
isPrinted = true;
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
这是我用来将总数保存在 firebase 上的代码:
double total = holder.quantity * price;
dataSnapshot.child(code).child("total").getRef().setValue(total);
我希望使用 Double 从 firebase 检索总数,但它给了我 ClassCastException。请帮忙解决。
我也尝试在here 寻找解决方案,但没有找到任何解决方案
【问题讨论】:
-
由于您获得了两种类型的
ClassCastExceptions,我认为问题在于您尝试从中检索数据的节点有几个子节点Long和其他子节点那是Double。请发布您的数据库结构。 -
@Rohan Stark。我现在才发...
标签: java android firebase firebase-realtime-database