我在这行中得到错误:“ Map map =(Map)dataSnapshot.getValue();”
private void getAssignedCustomer(){
String driverId = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference assignedCustomerRef = FirebaseDatabase.getInstance().getReference().child("Users").child("Drivers").child(driverId);
assignedCustomerRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot.exists()){
Map<String, Object> map = (Map<String, Object>) dataSnapshot.getValue();
if(map.get("customerRideId") != null){
customerId = map.get("customerRideId").toString();
getAssignedCustomerPickupLocation();
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
如何摆脱这个错误?
答案 0 :(得分:1)
从Firebase文档中引用:
getValue()以本机类型返回此快照中包含的数据。返回的可能类型为:
布尔值
字符串
长
Double
地图
列表
此列表是递归的;上面列表中Object的可能类型由同一列表给出。这些类型与JSON中可用的类型相对应。
从dataSnapshot.getValue()
返回的值似乎是布尔值,并且肯定不能将其分配给Map<String, Object>
。
确保您使用的是来自dataSnapshot
的正确数据
答案 1 :(得分:0)
请检查此代码
if (dataSnapshot.getValue() != null) {
String avataStr = (String) dataSnapshot.getValue();
}
答案 2 :(得分:0)
首先在您的firabase数据库中检查您要在节点“用户/驱动程序”下尝试检索的关键driverId的值不是布尔值。