代码之家  ›  专栏  ›  技术社区  ›  Amine Harbaoui

重复:在类上找不到的setter/字段

  •  2
  • Amine Harbaoui  · 技术社区  · 6 年前

    当我试图使用firebase获取数据时,我遇到了一个问题:

    在com.school.models.embeacon类中找不到0c:f3:ee:12:e0:4c的setter/field

    在com.school.models.embeacon类中找不到0c:f3:ee:12:e0:5c的setter/field

    在com.school.models.embeacon类中找不到0c:f3:ee:12:e0:e5的setter/field

    以下是我的数据结构:

    enter image description here

    这是获取我所有数据的代码:

    mDatabase.child("beacons").addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                    EmBeacon mBeacon = dataSnapshot.getValue(EmBeacon.class);
                    Log.i(TAG, "onDataChange: "+mBeacon);
                }
    
                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {
                    Log.w(TAG, "onCancelled:", databaseError.toException());
                }
            });
    

    班级:

    public class EmBeacon {
    
        private String proximityUuid;
        private int major;
        private int minor;
        private String addressMac;
    
        public EmBeacon() {
        }
    
        public EmBeacon( String addressMac) {
            this.addressMac = addressMac;
        }
    
        public EmBeacon(String proximityUuid, int major, int minor, String addressMac) {
            this.proximityUuid = proximityUuid;
            this.major = major;
            this.minor = minor;
            this.addressMac = addressMac;
        }
    
        public String getProximityUuid() {
            return proximityUuid;
        }
    
        public void setProximityUuid(String proximityUuid) {
            this.proximityUuid = proximityUuid;
        }
    
        public int getMajor() {
            return major;
        }
    
        public void setMajor(int major) {
            this.major = major;
        }
    
        public int getMinor() {
            return minor;
        }
    
        public void setMinor(int minor) {
            this.minor = minor;
        }
    
        public String getAddressMac() {
            return addressMac;
        }
    
        public void setAddressMac(String addressMac) {
            this.addressMac = addressMac;
        }
    
        @Override
        public String toString() {
            return "EmBeacon{" +
                    "proximityUuid='" + proximityUuid + '\'' +
                    ", major='" + major + '\'' +
                    ", minor='" + minor + '\'' +
                    ", addressMac='" + addressMac + '\'' +
                    '}';
    

    你知道这里怎么了吗?

    1 回复  |  直到 6 年前
        1
  •  4
  •   Frank van Puffelen    6 年前

    下面有多个信号灯 /beacons ,所以你需要在 onDataChange 以下内容:

    mDatabase.child("beacons").addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            for (DataSnapshot beaconSnapshot: dataSnapshot.getChildren()) {
                EmBeacon mBeacon = beaconSnapshot.getValue(EmBeacon.class);
                Log.i(TAG, "onDataChange: "+mBeacon);
            }
        }
    
        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {
            Log.w(TAG, "onCancelled:", databaseError.toException());
        }
    });