val-ам объекта при сборке? Раньше не писал никакие сеттеры и не ругался а тут вдруг.
потому что у val нет, и не может быть setter'ов
Val нельзя переопределить
Следовательно, задал значение один раз, и больше не можешь изменить, значит сеттер не нужен.
*переприсвоить Переопределить-то как раз можно
Да, перепутал термины
Почитай чем val от var отличается
Ну да, но почему тогда Android Studio упорно ищет public setters и не запускает без этого проект? Что пишет gradle (ошибка): error: Entities and POJOs must have a usable public constructor. You can have an empty constructor or a constructor whose parameters match the fields (by name and type). public final class Word implements android.os.Parcelable { ^ Tried the following constructors but they failed to match: /*bla bla bla*/ error: Cannot find setter for field. private final java.lang.String foreign = null; error: Cannot find setter for field. private final int category = 0; \error: Cannot find setter for field. private final boolean shown = false; error: Cannot find setter for field. private final int id = 0; Объект: @Entity(tableName = "word_table") @Parcelize data class Word( val native: String, val foreign: String, val category: Int, val shown: Boolean = true, @PrimaryKey(autoGenerate = true) val id: Int = 0 ) : Parcelable { }
Попробуй задать всем полям параметры по умолчанию
пробовал, все то же самое
Пустой конструктор пробовал?
просто все удалить и оставить ()? пишет data class must have at least 1 primary constructor parameter
Нет, внутри написать примерно так: constructor(): this("nativeValue", "foreignValue", categoryValue, shownValue)
Но вообще, пустой конструктор это тоже самое, что и выставить значения по умолчанию в самом классе.
С другой стороны, если Parcelable требует сеттер, то можно сделать var вместо Val, тогда сеттеры будут автоматически сгенерировано для каждой переменной.
Parcelable нет
какая версия рума?
2.2.5
поставь 2.2.6
Поменял, теперь это: C:\Users\HomoSapiens\AndroidStudioProjects\SwedishDriller\app\build\tmp\kapt3\stubs\debug\space\rodionov\swedishdriller\Word.java:11: error: Entities and POJOs must have a usable public constructor. You can have an empty constructor or a constructor whose parameters match the fields (by name and type). public final class Word implements android.os.Parcelable { ^ Tried the following constructors but they failed to match: Word(java.lang.String,java.lang.String,int,boolean,int) -> [param:native -> matched field:unmatched, param:foreign -> matched field:foreign, param:category -> matched field:category, param:shown -> matched field:shown, param:id -> matched field:id]warning: File for type 'space.rodionov.swedishdriller.SwedishDrillerApplication_HiltComponents' created in the last round will not be subject to annotation processing.[WARN] Incremental annotation processing requested, but support is disabled because the following processors are not incremental: androidx.room.RoomProcessor (DYNAMIC).
кстати, попробуй clean project & build сделать, кэши могли старые остаться
не знаю, я val спокойно делаю
попробовал это, теперь такая ошибка: Execution failed for task ':app:kaptDebugKotlin'. > A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptExecution > java.lang.reflect.InvocationTargetException (no error message)
кликни выше, там должна быть ошибка полная
спасибо, пробовал, это не работает тож
тоже не помогает, все то же самое
кстати, а у тебя kapt подключён?
> A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptExecution > java.lang.reflect.InvocationTargetException (no error message) * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights. * Get more help at https://help.gradle.org BUILD FAILED in 4s 21 actionable tasks: 4 executed, 17 up-to-date
да
kapt "androidx.room:room-compiler:2.2.6" такое должно быть если что)
Нашел в чем причина. Просто первое свойство объекта называется "native", а в языке джава есть такой термин native, и гдето при сборке АндроидСтудио путался и искал конструктор без этого свойства. Переименовал в "nativ" и все собралось
Обсуждают сегодня