我正在尝试获取值名称和电话,名称为=“ name”,电话=“ 123456”。我该如何解决?
我的数据库结构:用户/驱动程序(名称=“名称”,电话=“ 123456”)
我的骑手职业:
public class Rider {
private String name,email,password,phone;
public Rider(){}
public Rider(String name, String phone){
this.name=name;
this.phone=phone;
}
public String getName() {
return name;
}
public String getPhone() {
return phone;
}
public void setName(String name){
this.name=name;
}
public void setPhone(String phone){
this.phone=phone;
}
我的活动班级:
public void onKeyEntered(String key, GeoLocation location) {
FirebaseDatabase.getInstance().getReference("Users").child("Drivers")
.child(key).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
Rider rider=dataSnapshot.getValue(Rider.class);
mMap.addMarker(new MarkerOptions()
.position(new LatLng(mLastLocation.getLatitude(),mLastLocation.getLongitude()))
.flat(true)
.title(rider.getName())
.snippet("phone:"+rider.getPhone())
.icon(BitmapDescriptorFactory.fromResource(R.mipmap.ic_car_background)));
}
错误: com.google.firebase.database.DatabaseException:无法将java.lang.Long类型的值转换为String
答案 0 :(得分:0)
似乎FirebaseDatabase
中的值被存储为Long
值。您可以检查并替换数据库中的这些值,也可以在模型类中创建另一个设置器以接受Long
值。然后,您可以使用String.valueOf()
方法将值存储在私有字段中。
希望有帮助。
答案 1 :(得分:0)
我认为问题是您没有在Firebase DB中的“”之间添加电话号码。这意味着Firebase会将该值视为Long,而根据提供的代码,您希望它为String。
而是像这样在Firebase数据库控制台中添加值:
phone="123456"
在我的照片中,我希望数字是整数或长整数。
如果要在Firebase控制台中更改值,只需单击该值并开始编辑。
答案 2 :(得分:0)
正如我所看到的,在您的数据库中,您有一些按键的电话不是phone =“ 19485”,而是phone =3947。在那些没有“”的地方更改为“”。您可以从Firebase手动编辑它们
答案 3 :(得分:0)
您在骑手课上没有问题。您的问题与Firebase数据库中的子值类型有关
带有=>“”子串值的子值 如果没有“”,则为整数值
您的Constructor函数参数类型为String是,虽然不错,但您的Constructor函数参数类型与Firebase数据库子值类型相同。 我遇到了与您一样的问题,并解决了此问题=>将子值123456更改为“ 123456” 最后,您解决了这个问题