提问者:小点点

无法用URI序列化对象


我有这门课:

data class ProjectFile(val uri: Uri, val name: String)

我有另一个包含它的类,并保存在Room数据库中。

@TypeConverters(Converters::class)
@Entity(tableName = "projects")
data class Project(
  @PrimaryKey
  @ColumnInfo(name = "id")
  var id: String = "",
  @ColumnInfo(name = "uid")
  var uid: String? = "",
  @ColumnInfo(name = "name")
  var name: String = "",
  @ColumnInfo(name = "businessId")
  var businessId: String?,
  @ColumnInfo(name = "image")
  var image: String?,
  @ColumnInfo(name = "tasks")
  var tasks: List<Task> = ArrayList(),
  @ColumnInfo(name = "managers")
  var managers: List<Person> = listOf(),
  @ColumnInfo(name = "files")
  var files: List<ProjectsViewModel.ProjectFile> = listOf()

我不断地遇到这样的错误:

java.lang.RuntimeException:无法调用无参数的私有Android.Net.URI()

它无法在Converters文件中将对象“ProjectFile”转换为字符串。 我该怎么做才能修好它? 谢了。


共1个答案

匿名用户

URI类的构造函数是私有的,是一个抽象类。 它尝试使用反射APIURI类创建一个新对象(我们不能为抽象类创建对象)。 因此最好将uri对象的类型更改为string,而不是uri

data class ProjectFile(val uri: String, val name: String)