构造函数在Firebase setValue()中作为arg传递,而不是调用construtor

时间:2016-11-21 10:58:11

标签: android firebase firebase-realtime-database

我已将Android应用连接到Firebase实时数据库。

我有一个简单的模型类,我用它来发送给Firebase。

构造函数代码:

public People(String name, int age, boolean single) {
    this.name = name;
    this.age = age;
    this.single = single;
}

onCreate()MainActivity.java方法的代码是:

myRef.setValue(new People("John Smith", 21, false));
myRef.setValue(new People("Sarah Smith", 30, true));
myRef.setValue(new People("Joe Bloggs", 50, false));

第一个setValue()工作正常。使用name =“John Smith”更新Firebase,age = 21,single = false。

问题#1

但是第二个值应该完全取代约翰史密斯的进入,但年龄达到25岁(我之前设定的莎拉的年龄为25岁,但它不知何故记得而不是用30分配它)。当我进入调试模式时,Android Studio实际上传递了25作为arg。

问题#2

的意义上,甚至没有触发第三个setValue()
new People("Joe Bloggs", 50, false) 

构造函数未被调用。在第二次setValue()来电后,该应用停止投放。

任何人都知道我做错了什么?

1 个答案:

答案 0 :(得分:0)

根据the reference of Firebase

  

此外,您可以将自己的类的实例设置到此位置,前提是它们满足以下约束条件:

     
      
  1. 该类必须具有不带参数的默认构造函数
  2.   
  3. 该类必须为属性定义公共getter   分配。没有公共getter的属性将被设置为他们的   反序列化实例时的默认值
  4.   

您可以添加以下代码并重试:

public People() {
    // empty
}
相关问题