我有一个基类,它存储一个名为updatedAt的字段和一个setter setUpdatedAt。有一个儿童班儿童。我知道Firebase在父类中找不到setter,所以我只是在Child中再次定义setter setUpdatedAt,但我仍然得到"没有在class xxx.Child"
我的数据库json有" updatedAt"字段。
示例代码:
public abstract class Model {
private String mId;
private long mUpdatedAt;
public String getId() {return mId;}
public void setId(String id) { mId = id;}
public long getUpdatedAt() {return mUpdatedAt;}
public void setUpdatedAt(long updatedAt) { mUpdatedAt = updatedAt;}
}
public abstract class Child extends Model {
private String mCreator;
public String getCreator() {
return mCreator;
}
public void setCreator(String creator) {
mCreator = creator;
}
// having the following or not does not change the outcome
public void setUpdatedAt(long updatedAt) {
super.setUpdatedAt(updatedAt);
}
}
// then somewhere else, do this
new ValueEventListener() {
public void onDataChange(DataSnapshot dataSnapshot) {
model = dataSnapshot.getValue(Child.class);
}
我得到了#34;没有在class xxx.Child"上发现的更新的set的setter / field和"没有在类xxx.Child"上找到的id的setter / field。当" model = dataSnapshot.getValue(Child.class);"被执行。
有关实际代码示例,请参阅github MinFirebaseApp。在MainActivity中,您可以看到两种方法" createEmployee"和" showEmployee",它显示了如何在" createEmployee"中创建员工。并且" showEmployee"中提取了同一名员工。使用代码,您可以通过(在将包ID更改为您的代码之后)重现它:
答案 0 :(得分:0)
您需要在子类中调用所有的setter。你也可以做吸气剂。现在你只是在做setUpdatedAt(),但也有setId()。这是实时数据库的Android客户端库中的一个错误,但该团队正在开发一个将来可用的修复程序。