【问题标题】:Can't serialize object with URI无法使用 URI 序列化对象
【发布时间】:2020-11-03 22:56:48
【问题描述】:

我有这门课:

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()

它无法将对象“ProjectFile”转换为转换器文件中的字符串。 我能做些什么来解决它? 谢谢。

【问题讨论】:

    标签: android kotlin type-conversion android-room converters


    【解决方案1】:

    Uri 类的构造函数是私有的,它是一个抽象类。它尝试使用Reflection APIUri 类创建一个新对象(我们不能为抽象类创建一个对象)。所以最好将uri对象的类型改为String而不是Uri

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-23
      • 1970-01-01
      • 1970-01-01
      • 2013-11-14
      • 1970-01-01
      • 1970-01-01
      • 2018-06-16
      • 1970-01-01
      相关资源
      最近更新 更多