我正在嘗試在我的 Android 應(yīng)用程序中設(shè)置 Room。我收到此錯(cuò)誤,但我真的不明白為什么。完全錯(cuò)誤:實(shí)體和 Pojos 必須有一個(gè)可用的公共構(gòu)造函數(shù)。您可以有一個(gè)空的構(gòu)造函數(shù)或參數(shù)與字段匹配的構(gòu)造函數(shù)(按名稱和類型)。我正在使用 1.1.1 版的 Room。我嘗試了空構(gòu)造函數(shù)、帶參數(shù)的構(gòu)造函數(shù),還修復(fù)了我遇到的所有警告,這樣就沒(méi)有其他問(wèn)題了。這是我的實(shí)體:標(biāo)記實(shí)體@Entity(tableName = "markers")public class Marker { public Marker(@Nullable String title, @Nullable String snippet, String latitude, String longitude, float color) { this.title = title; this.snippet = snippet; this.latitude = latitude; this.longitude = longitude; this.color = color; } @PrimaryKey(autoGenerate = true) private int id; private String title; private String snippet; private String latitude; private String longitude; private float color; /* Getters and setters */}照片實(shí)體@Entity(tableName = "photos", foreignKeys = @ForeignKey(entity = Marker.class, parentColumns = "id", childColumns = "marker_id"), indices = {@Index("marker_id")})public class Photo { public Photo(String imageBase64, int markerId) { this.imageBase64 = imageBase64; this.markerId = markerId; } @PrimaryKey(autoGenerate = true) private int id; @ColumnInfo(name = "image") private String imageBase64; @ColumnInfo(name = "marker_id") private int markerId; /* Getters and setters */}網(wǎng)絡(luò)實(shí)體@Entity(tableName = "networks", foreignKeys = @ForeignKey(entity = Marker.class, parentColumns = "id", childColumns = "marker_id"), indices = {@Index("marker_id")})public class Network { public Network(String ssid, String bssid, String capabilities, long timestamp, int markerId) { this.ssid = ssid; this.bssid = bssid; this.capabilities = capabilities; this.timestamp = timestamp; this.markerId = markerId; }}我看了很多這樣的問(wèn)題,但沒(méi)有一個(gè)能解決我的問(wèn)題。
2 回答

Smart貓小萌
TA貢獻(xiàn)1911條經(jīng)驗(yàn) 獲得超7個(gè)贊
該錯(cuò)誤是由于MarkerDao
類中的錯(cuò)誤而不是實(shí)體本身(不知何故)。
更準(zhǔn)確地說(shuō),一個(gè)函數(shù)試圖從查詢中獲取一個(gè)LatLng
對(duì)象:SELECT string, string from ...
@Query("SELECT latitude, longitude FROM markers WHERE id = :id") LatLng getMarkerLatitude(int id);
這個(gè)錯(cuò)誤非常煩人,因?yàn)樗鼪](méi)有提供任何細(xì)節(jié)。如果有人發(fā)現(xiàn)這一點(diǎn),請(qǐng)注釋掉您的實(shí)體和 DAO,并一次取消注釋它們,以查看錯(cuò)誤開始發(fā)生的位置。
祝你好運(yùn)!
資料來(lái)源:我與@Jean-Christophe Martel 合作

達(dá)令說(shuō)
TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超6個(gè)贊
像這樣創(chuàng)建空的構(gòu)造函數(shù)。
public Marker(){};
public Photo(){};
public Network(){};
或者您可以刪除所有構(gòu)造函數(shù)。清理項(xiàng)目并重建。檢查這是否有效。
添加回答
舉報(bào)
0/150
提交
取消