Android Studio java.lang.ClassCastException:无法将java.lang.Boolean强制转换为java.util.Map

nuypyhwy  于 2023-03-13  发布在  Android
关注(0)|答案(4)|浏览(374)

我在此行中遇到错误:“Mapmap =(Map)数据快照.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) {
        }
    });
}

如何摆脱这个错误???

368yc8dk

368yc8dk1#

引用Firebase文档:
getValue()将此快照中包含的数据作为本机类型返回。返回的可能类型包括:
布尔
字符串

双倍
Map
列表
这个列表是递归的;上面列表中Object的可能类型也是由同一列表给出的。2这些类型对应于JSON中可用的类型。
dataSnapshot.getValue()返回的值似乎是Boolean,并且肯定不能将其分配给Map<String, Object>
确保使用dataSnapshot中的正确数据

yduiuuwa

yduiuuwa2#

首先在您的firabase数据库中检查您试图在节点Users/Drivers下检索的键driverId的值不是布尔值。

uajslkp6

uajslkp63#

请检查此代码

if (dataSnapshot.getValue() != null) {
  String avataStr = (String) dataSnapshot.getValue();
}
vjrehmav

vjrehmav4#

我希望你解决了这个问题,如果没有,使用以下代码:

private void getAssignedCustomer(){
String driverId = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference assignedCustomerRef = 
FirebaseDatabase.getInstance().getReference().child("Users")
 .child("Drivers").child(driverId).child("customerRideId");
assignedCustomerRef.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        if(dataSnapshot.exists()){
             customerId = dataSnapshot.getValue().toString();
             getAssignedCustomerPickupLocation();
        }
    }

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

}

相关问题