在我的 firebase 数据库中,我有一个节点,它的子节点保存某个位置的纬度和经度,如下面的 json fragment 所示
{
"DriversAvailable" : {
"sfdqfkoxYjXB2YRDTfIaezWgkBd2" : {
".priority" : "dn5bpxwrtz",
"g" : "dn5bpxwrtz",
"l" : [ 33.7925271, -84.3881384 ]
}
我使用以下代码将纬度和经度放入单独的变量中
driverLocationReferenceGetLocation = FirebaseDatabase.getInstance().getReference("DriversAvailable").child(driverFoundID);
driverLocationReferenceGetLocation.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot snapm: dataSnapshot.getChildren()) {
Double latitude = (Double) snapm.child("0").getValue();
Double longitude = (Double) snapm.child("1").getValue();
当我调试它时,它显示值 snapm 的值设置为 1={0=33.79, 1=-84.38},但由于某种原因,实际的纬度和经度变量为 null
最佳答案
不确定什么在您的代码中不起作用,但我绝对建议您监听您要获取其数据的精确节点:
driverLocationReferenceGetLocation = FirebaseDatabase.getInstance().getReference("DriversAvailable").child(driverFoundID);
driverLocationReferenceGetLocation.child("l").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
Double latitude = snapshot.child("0").getValue(Double.class);
Double longitude = snapshot.child("1").getValue(Double.class);
关于java - firebase getValue 方法没有按应有的方式从节点检索值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56962431/