Не удается сериализовать объект с URI - PullRequest
1 голос
/ 14 июля 2020

У меня есть этот класс:

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 "в строку в файле конвертеров. что я могу сделать, чтобы это исправить? спасибо.

1 Ответ

1 голос
/ 14 июля 2020

Конструктор класса Uri частный и абстрактный класс. Он пытается создать новый объект для класса Uri, используя Reflection API (мы не можем создать объект для абстрактного класса). Так что лучше изменить тип объекта uri на String вместо Uri.

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