Firebase LatLng缺少没有参数的构造函数 [英] Firebase LatLng is missing a constructor with no arguments
问题描述
我将坐标存储在实时数据库中,并且在尝试检索数据时收到错误消息.错误消息是
I am storing coordinates in a realtime database and I am getting an error message when trying to retrieve data. The error message is
com.google.firebase.database.DatabaseException:com.google.android.gms.maps.model.LatLng类缺少无参数的构造函数
com.google.firebase.database.DatabaseException: Class com.google.android.gms.maps.model.LatLng is missing a constructor with no arguments
...
com.google.firebase.database.DataSnapshot.getValue(未知来源)
at com.google.firebase.database.DataSnapshot.getValue(Unknown Source)
这是代码
Main.java
Main.java
protected void onStart() {
apiClient.connect();
super.onStart();
DatabaseReference test = database.getReference("jsierra");
test.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
Toast.makeText(getBaseContext(), "Child Added", Toast.LENGTH_LONG).show();
givenData = dataSnapshot.getValue(data.class); <-- Error
}
}
data.java
data.java
import com.google.android.gms.maps.model.LatLng;
public class data {
private LatLng coordinates;
public data() {
coordinates = null;
}
public data(LatLng coordinates)
{
this.coordinates = coordinates;
}
public void setLatLng(LatLng coordinates) {
this.coordinates = coordinates;
}
LatLng getLatLng () {
return coordinates;
}
}
推荐答案
创建自己的LatLng
模型类,而不要使用Google Maps库中的模型类,因为它在实现中缺少公共构造函数.
Create your own LatLng
model class instead of using the one from Google Maps library because it lacks a public constructor in the implementation.
public class LatLng {
private Double latitude;
private Double longitude;
public LatLng() {}
... public getter ...
}
编辑:如何将此LatLng
转换为com.google.android.gms.maps.model.LatLng
com.google.android.gms.maps.model.LatLng mapsLatLng =
new com.google.android.gms.maps.model.LatLng(latLng.getLatitude(),
latLng.getLongitude());
这篇关于Firebase LatLng缺少没有参数的构造函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!