Android Room не генерирует правильные конкретные классы Database_IpmlAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Android Room не генерирует правильные конкретные классы Database_Ipml

Сообщение Anonymous »


Я создаю приложение со списком дел в Android Studio, используя Jetpack:Room в качестве библиотеки базы данных. Я следовал руководству для разработчиков Android, чтобы смоделировать свой код, однако получаю сообщение об ошибке «java.lang.RuntimeException: невозможно найти реализацию для com.example.todolist.database.TaskRoomDatabase. TaskRoomDatabase_Impl не существует», когда я пытаюсь позвонить функцию Insert в первый раз и создайте базу данных. Я использую Room версии 2.5.2, ksp для "компилятора комнаты" и версия 1_8 для Java и 2.7.3 для навигации.

Вот класс Task.kt:

@Entity(tableName = "задачи") класс данных Задача( @PrimaryKey(autoGenerate = true) Идентификатор значения: Int = 0, @ColumnInfo(name = «имя_задачи») val имя_задачи: String, @ColumnInfo(name = "task_description") val TaskDescription: String ){} Класс TaskDao.kt:

//Объект доступа к базе данных объекта Task @Дао интерфейс ТаскДао { @Query("ВЫБРАТЬ * из задач WHERE имя_задачи = :имя") fun getTask(name: String): List @Insert(onConflict = OnConflictStrategy.REPLACE) приостановить вставку развлечения (задача: Задача): Длинная @Обновлять приостановить забавное обновление (задача: Задача) @Удалить приостановить веселье удалить (задача: Задача) } TaskRoomDatabase.kt

@Database(entities = [Task::class], version = 1, ExportSchema = false) абстрактный класс TaskRoomDatabase : RoomDatabase() { абстрактное развлечение TaskDao(): TaskDao сопутствующий объект { @Неустойчивый частная переменная INSTANCE: TaskRoomDatabase? = ноль весело getDatabase (контекст: Контекст): TaskRoomDatabase { //если INSTANCE не равно нулю, возвращаем его //иначе создадим базу данных вернуть ЭКСПЛУАТАЦИЮ?: синхронизировано(это){ val экземпляр = Room.databaseBuilder( контекст, TaskRoomDatabase::class.java, "база_данных_задачи") .createFromAsset("база данных/task_database") .строить() ЭКЗЕМПЛЯР = экземпляр пример } } } } и функция из фрагмента, которая должна вызывать функцию вставки.

частное развлечение addNewTask() : Boolean { если (isEntryValid()) { viewModel.addTask( привязка.editTaskTitle.text.toString(), привязка.taskDetails.text.toString() ) вернуть истину } val toast = Toast.makeText(context, «Неверный ввод», Toast.LENGTH_SHORT) тост.шоу() вернуть ложь } //затем функция viewModel.addtask, упомянутая выше весело addTask (имя задачи: String, TaskDescription: String) { Log.d("TaskView", "переданные строки: $taskName, $taskDescription ") val newTask = getNewTask (имя задачи, описание задачи) вставитьЗадачу(новаяЗадача) } //Вставляем объект задачи в БД в неблокирующую сопрограмму личное развлечение InsertTask(newTask: Задача) { viewModelScope.launch { TaskDao.insert(newTask) } } Что я делаю не так?

РЕДАКТИРОВАТЬ: Вот build.gradle:

mport org.jetbrains.kotlin.storage.CacheResetOnProcessCanceled.enabled плагины { идентификатор("com.android.application") id("org.jetbrains.kotlin.android") id("com.google.devtools.ksp") применить true } андроид { пространство имен = "com.example.todolist" компилироватьSdk = 34 defaultConfig { applicationId = "com.example.todolist" минСдк = 24 цельСдк = 34 Код версии = 1 имя_версии = "1.0" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } типы сборки { выпускать { isMinifyEnabled = ложь proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) } } компиляцияварианты { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } buildFeatures{ просмотрбиндинг = истина } котлинОпции { jvmTarget = "1,8" } } зависимости { val room_version = "2.5.2" реализация ("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4") реализация ("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4") реализация ("androidx.room:room-ktx:$room_version") //kapt("androidx.room:room-compiler:$room_version") реализация("androidx.core:core-ktx:1.12.0") реализация("androidx.appcompat:appcompat:1.6.1") реализация("com.google.android.material:material:1.9.0") реализация("androidx.constraintlayout:constraintlayout:2.1.4") testImplementation("junit:junit:4.13.2") androidTestImplementation("androidx.test.ext:junit:1.1.5") androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1") реализация ("com.google.android.material:material:") реализация ("androidx.room:room-runtime:$room_version") annotationProcessor("androidx.room:room-compiler:$room_version") val nav_version = "2.7.3" реализация("androidx.navigation:navigation-fragment-ktx:$nav_version") реализация("androidx.navigation:navigation-ui-ktx:$nav_version") //Привязка данных для использования DataBindingUtil реализация ("androidx.databinding:databinding-runtime:4.2.0") реализация("androidx.room:room-runtime:$room_version") annotationProcessor("androidx.room:room-compiler:$room_version") // Чтобы использовать инструмент обработки аннотаций Kotlin (kapt) ksp("androidx.room:room-compiler:$room_version") // необязательно — поддержка расширений Kotlin и сопрограмм для Room реализация("androidx.room:room-ktx:$room_version") // необязательно — поддержка RxJava2 для Room реализация("androidx.room:room-rxjava2:$room_version") // необязательно — поддержка RxJava3 для Room реализация("androidx.room:room-rxjava3:$room_version") // необязательно — поддержка Guava для Room, включая необязательный и ListenableFuture реализация("androidx.room:room-guava:$room_version") // необязательно — тестовые помощники testImplementation("androidx.room:room-testing:$room_version") // необязательно — интеграция страницы 3 реализация("androidx.room:room-paging:$room_version")

При вызове функции для добавления привязанных текстовых данных к объекту Task и последующего сохранения их в базе данных программа аварийно завершает работу и генерирует указанную выше ошибку.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»