这是android studio中的一个简单的类:
package com.loghty.bahaa.loghty;
import android.arch.persistence.room.ColumnInfo;
import android.arch.persistence.room.Entity;
import android.arch.persistence.room.PrimaryKey;
import android.support.annotation.NonNull;
@Entity (tableName = "Chars")
public class Chars {
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "char_Id")
private int pCId;
@NonNull
@ColumnInfo(name = "char_field")
private String mcharField;
// Getters and setters
public String getMcharField() {
return mcharField;
}
public void setMcharField(@NonNull String mcharField) {
this.mcharField = mcharField;
}
public int getpCId() {
return pCId;
}
}
但是当我构建应用程序时,我在pCId字段中收到此错误:
错误:找不到字段的吸气剂
我检查了很多次代码,但是没有什么奇怪的。错误到底在哪里?
答案 0 :(得分:0)
为我工作:
在设备上首次安装之前清除所有数据,因为我不想执行migration。
@Entity(tableName = "words")
public class Word {
@PrimaryKey(autoGenerate = true)
private int id;
@NonNull
@ColumnInfo(name = "word")
private String mWord;
public Word(int id, @NonNull String mWord) {
this.id = id;
this.mWord = mWord;
}
@Ignore
public Word(@NonNull String mWord) {
this.mWord = mWord;
}
public int getId() { return id; }
public String getWord(){ return this.mWord; }
}
答案 1 :(得分:0)
如果您使用的是Room,并且变量是布尔值,请记住,getter名为isVariableName()而不是getVariableName()。
我强烈建议-如果错误再次出现-请使用Android Studio自动生成您的getter和setter。这样,您就不会再遇到这个问题。
要这样做:
答案 2 :(得分:0)
将变量从专用更改为受保护或公用
来自private int pCId;
到
protected int pCId;
答案 3 :(得分:0)
当getter fun返回类型不同于字段的类型(DateTime
与String
)时,我遇到了相同的问题:
val timestamp: String = DateTime.now().toString()
fun getTimestamp(): DateTime = DateTime.parse(timestamp)
Room为getTimestamp()
字段跳过了timestamp
一代的乐趣,因为Room认为它已经创建了。哪里,类型不匹配导致异常,因为类型不匹配。
解决方案是重命名吸气者:
val timestamp: String = DateTime.now().toString()
fun getTime(): DateTime = DateTime.parse(timestamp)