gpt4 book ai didi

java - 获取 Firebase 数据库中的最后一个节点

转载 作者:行者123 更新时间:2023-12-02 10:07:01 25 4
gpt4 key购买 nike

我想访问 Firebase 数据库中最后添加的节点的位置详细信息。您可以在下图中看到。它给出了错误。请告诉我哪里需要改正。

enter image description here

这是我的代码

DatabaseReference dbReference = FirebaseDatabase.getInstance().getReference();
Query lastQuery = dbReference.child("User").child("Location").orderByKey().limitToLast(1);

lastQuery.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {

LatLng prevloc = new LatLng(
dataSnapshot.child("latitude").getValue(Double.class),
dataSnapshot.child("longitude").getValue(Double.class));

}

}

@Override
public void onCancelled(DatabaseError databaseError) {
}
});

这里有错误

03-21 18:32:10.328 1093-1093/com.jkweblander.mapviewex E/dalvikvm: Could not find class 'dalvik.system.DelegateLastClassLoader', referenced from method ab.b
03-21 18:32:14.068 1093-1093/com.jkweblander.mapviewex E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.jkweblander.mapviewex, PID: 1093
java.lang.NullPointerException
at com.jkweblander.mapviewex.MapsActivity$2.onDataChange(MapsActivity.java:240)
at com.google.firebase.database.Query$1.onDataChange(com.google.firebase:firebase-database@@16.1.0:183)
at com.google.firebase.database.core.ValueEventRegistration.fireEvent(com.google.firebase:firebase-database@@16.1.0:75)
at com.google.firebase.database.core.view.DataEvent.fire(com.google.firebase:firebase-database@@16.1.0:63)
at com.google.firebase.database.core.view.EventRaiser$1.run(com.google.firebase:firebase-database@@16.1.0:55)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:146)
at android.app.ActivityThread.main(ActivityThread.java:5653)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107)
at dalvik.system.NativeStart.main(Native Method)

最佳答案

要解决此问题,请使用以下代码行:

DatabaseReference dbReference = FirebaseDatabase.getInstance().getReference();
Query lastQuery = dbReference.child("User").child("Location").orderByKey().limitToLast(1);
lastQuery.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
double lat = ds.child("latitude").getValue(Double.class);
double lng = ds.child("longitude").getValue(Double.class);
LatLng prevloc = new LatLng(lat, lng);
Log.d(TAG, lat + ", " + lng);
}
}

@Override
public void onCancelled(DatabaseError databaseError) {
Log.d("TAG", databaseError.getMessage()); //Don't ignore potential errors!
}
});

看,我使用了 getChildren() 方法来迭代 DataSnapshot 对象。 logcat 中的结果将是 Location 节点中项目的所有纬度和经度。因此,即使 DataSnapshot 对象中只有一个对象,您也应该迭代才能获取它。

关于java - 获取 Firebase 数据库中的最后一个节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55280915/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com