Firebase不会将布尔值绑定到字段

Jsc*_*ols 5 android firebase firebase-realtime-database

我正在使用谷歌的firebase-database SDK for Android,v9.0.1.我将我的应用程序连接到Firebase,可以在不同位置读取和写入数据.

但是,我无法获取一个特定的布尔字段来绑定使用,dataSnapshot.getValue(PingReport.class)并且我在日志中不断收到错误,该错误表明No setter/field for isUp found on class com.myapp.PingReport该字段在我的模型中明显存在.

这是Firebase数据库中的JSON:

{
    "durationMs": 364,
    "isUp": true,
    "timestampMillis": 1464916019971
}
Run Code Online (Sandbox Code Playgroud)

这是模型类:

public class PingReport {

    private long durationMs;
    private boolean isUp;
    private long timestampMillis;

    public PingReport() {
        // required by Firebase
    }

    public PingReport(long durationMs, boolean isUp, long timestampMillis) {
        this.durationMs = durationMs;
        this.isUp = isUp;
        this.timestampMillis = timestampMillis;
    }

    public long getDurationMs() {
        return durationMs;
    }

    public boolean isUp() {
        return isUp;
    }

    public long getTimestampMillis() {
        return timestampMillis;
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我调用getDurationMs()getTimestampMillis()返回正确的值,但返回的值isUp()始终是false.我曾尝试命名它的不同组合upisUpmUp和增加setter方法setUp(boolean up)setIsUp(boolean isUp),但似乎没有任何工作.Android SDK的文档不是很详细.是否有一些我忽略的技巧或细节?

Bob*_*der 39

如果你的布尔字段命名isUp,然后吸气剂必须命名isIsUp()getIsUp().或者,如果您想要一个名为getter isUp的字段,那么字段名称就是up.

  • https://firebase.google.com/docs/reference/android/com/google/firebase/database/DataSnapshot.html上的JavaDoc声明:"该类必须为要分配的属性定义公共getter.不公开的属性当反序列化实例时,getter将被设置为默认值"将getter从传统形式,public boolean isUp()更改为public boolean getIsUp()解决了这个问题.我不喜欢它,但那是解决方案. (2认同)
  • 这是癌。只是浪费了我生命中的2.5个小时才回去:( (2认同)
  • Firebase 的行为很奇怪 :( 但是在浪费了几个小时后解决了我的问题。谢谢伙计。Upvoted。 (2认同)