我是android架构组件的新手。我正在尝试使用相同的 Gradle 配置引用android-architecture-components/BasicRxJavaSample来构建应用。但我得到以下错误..
我正在为所有架构组件使用版本“1.0.0-alpha9”。我也尝试过当前的“1.0.0-beta1”版本。
我已经看过[场上的模糊吸气...房间持久性库 2也链接,但根据谷歌示例不需要为每个字段设置。
模型类
@Entity(tableName = "tblDepartment")
public class Department{
@PrimaryKey
private String mId;
private String mName;
@Ignore
public Department(String dep) {
mId= UUID.randomUUID().toString();
mName= dep;
}
public Department(String id, String dep) {
mId = id;
mName=dep;
}
public String getDepartmentId() {
return mId;
}
public String getDepartmentName() {
return mName;
}
}
答案 0 :(得分:3)
您的问题是您的getter / setter与您的字段名称不匹配,所以目前您有:
private String mId;
public String getId() {}
Room预处理器正在查看您的类并且未能找到mId
字段的getter / setter,因为它期望public String getMId()
与构造函数相同,参数名称与字段名称不匹配所以它找不到有效的构造函数。
答案 1 :(得分:0)
你需要一个有效的构造函数。
您通过Room存储的所有字段的getter / setter。
尝试:
@Entity(tableName = "tblDepartment")
public class Department{
@PrimaryKey
private String mId;
private String mName;
@Ignore
public Department(String mName) {
mId= UUID.randomUUID().toString();
this.mName= mName;
}
public Department(String id, String name) {
this.mId = mId;
this.mName=mName;
}
public String getId() {
return mId;
}
public String getName() {
return mName;
}
public void setId(String mId){ this.mId = mId; }
public void setName(String mName){ this.mName = mName; }
}
答案 2 :(得分:0)
您也可以尝试以下操作:-
@Ignore
public Department(int mId, String mName) {
this.mId= mId;
this.mName= mName;
}
public Department(String mName) {
this.mName= mName;
}