我在Kotlin开始了我的第一个Android项目。官方文件建议我使用我做的房间。
添加Room后我无法编译我的项目。
warning: There are multiple good constructors and Room will pick the
no-arg constructor. You can use the @Ignore annotation to eliminate
unwanted constructors.
public final class TodoData {
^
error: Cannot find setter for field.
private final java.lang.Long id = null;
^
error: Cannot find setter for field.
private final java.lang.String firstName = null;
^
error: Cannot find setter for field.
private final java.lang.String lastName = null;
^
kotlin和房间的版本是:
我的gradle.build依赖项如下所示:
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation"org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
// Room
implementation "android.arch.persistence.room:runtime:$room_version"
kapt "android.arch.persistence.room:compiler:$room_version"
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
我还在文件顶部添加了:
这是我的Dao:
@Entity
data class TodoData(
@PrimaryKey(autoGenerate = true)
var od: Long? = null,
var firstName: String = "",
var lastName: String = ""
){
constructor(): this(od = null, firstName = "", lastName = "")
}
我尝试了什么:
有人遇到过同样的问题并修好了吗?
感谢您的时间!
ps。:我不经常在Stackoverflow上发布内容 对我提出问题的方式的反馈意见将被接受。
答案 0 :(得分:0)
为什么你有constructor()
?您已经使用
data class TodoData(
@PrimaryKey(autoGenerate = true)
var od: Long? = null,
var firstName: String = "",
var lastName: String = ""
)
删除constructor
,一切都应该没问题。