Jes*_*per 5 android firebase firebase-realtime-database
在我的数据库中,我跟踪用户行驶的距离,并为每个人设置初始值 0。在我的代码中,我通过获取旧值并向其添加新距离来更新此值,然后保存该值。
首先,当我从数据库中检索 0 时,它以 Long 形式返回,这很好:
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Long previousDistance = (Long) dataSnapshot.child("distance").getValue();
userReference.child("distance").setValue(previousDistance.doubleValue()+distanceTravelled);
}
Run Code Online (Sandbox Code Playgroud)
问题是,现在,存储在数据库中的值是 Double,因此下次运行上述代码时,它将失败并显示ClassCastExcepiton
.
我可能可以用 if 语句解决这个问题,但最简单的解决方案是将最初的 0 存储为 Double 。但是,我无法做到这一点。我已经尝试过这两个:
myDatabase.child("users").child(lowerCaseUserName).child("distance").setValue(Double.valueOf(0.0));
myDatabase.child("users").child(lowerCaseUserName).child("distance").setValue(0.0);
Run Code Online (Sandbox Code Playgroud)
它们仍然存储为“0”并以 Long 形式返回。是否可以将零作为 Double 存储在数据库中?
double previousDistance = (double) dataSnapshot.child("distance").getValue();
Run Code Online (Sandbox Code Playgroud)
你应该像往常一样说:
myDatabase.child("users").child(lowerCaseUserName).child("distance").setValue(0);
Run Code Online (Sandbox Code Playgroud)