Неразрешенная hiltviewmodel () в JetPack Compose with HiltAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Неразрешенная hiltviewmodel () в JetPack Compose with Hilt

Сообщение Anonymous »

Я пытаюсь использовать hiltviewmodel () from androidx.hilt.navigation.compose.hiltviewmodel в моем экране JetPack Compose. Тем не менее, это демонстрирует неразрешенную ссылку, или я получаю ошибки сборки, связанные с ним. Я настроил рукоятку для инъекции зависимости. < /P>

Код: Выделить всё

libs.versions.toml
:

Код: Выделить всё

agp = "8.9.0"
kotlin = "2.1.10"
ksp = "2.1.10-1.0.31"
composeCompilerExtension = "1.5.21"
hilt = "2.56"
androidxHiltNavigationCompose = "1.2.0"

[libraries]
# Hilt
hilt-android = { group = "com.google.dagger", name = "hilt-android", version.ref = "hilt" }
hilt-compiler = { group = "com.google.dagger", name = "hilt-compiler", version.ref = "hilt" }
androidx-hilt-navigation-compose = { group = "androidx.hilt", name = "hilt-navigation-compose", version.ref = "androidxHiltNavigationCompose" }

[plugins]
android-application = { id = "com.android.application", version.ref = "agp" }
kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" }
hilt = { id = "com.google.dagger.hilt.android", version.ref = "hilt" }
project build.gradle.kts :

Код: Выделить всё

plugins {
alias(libs.plugins.android.application) apply false
alias(libs.plugins.kotlin.android) apply false
alias(libs.plugins.ksp) apply false
alias(libs.plugins.hilt) apply false
}
app build.gradle.kts :

Код: Выделить всё

plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
alias(libs.plugins.ksp)
alias(libs.plugins.hilt)
}

android {
namespace = "com.example.myapp"
compileSdk = 35

defaultConfig { /* ... */ }
buildTypes { /* ... */ }
compileOptions { /* ... */ }
kotlinOptions { /* ... */ }

buildFeatures {
compose = true
}
composeOptions {
kotlinCompilerExtensionVersion = libs.versions.composeCompilerExtension.get()
}
}

dependencies {
// Hilt
implementation(libs.hilt.android)
ksp(libs.hilt.compiler)
implementation(libs.androidx.hilt.navigation.compose)

// Other relevant dependencies (Compose, Room, etc.)
implementation(platform(libs.androidx.compose.bom))
implementation(libs.androidx.compose.ui)
implementation(libs.androidx.compose.material3)
// ...
}
класс приложения (myapplication.kt) :

Код: Выделить всё

package com.example.myapp

import android.app.Application
import dagger.hilt.android.HiltAndroidApp

@HiltAndroidApp
class MyApplication : Application()
< /code>
AndroidManifest.xml
:

Код: Выделить всё


< /code>
ViewModel (MyViewModel.kt)
:

Код: Выделить всё

package com.example.myapp.ui.viewmodel // Your package

import androidx.lifecycle.ViewModel
import com.example.myapp.data.repository.MyRepository // Example repository
import dagger.hilt.android.lifecycle.HiltViewModel
import javax.inject.Inject

@HiltViewModel
class MyViewModel @Inject constructor(
private val repository: MyRepository
) : ViewModel() {
// ... ViewModel logic ...
}
< /code>
Composable Screen (MyScreen.kt)
:

Код: Выделить всё

package com.example.myapp.ui.screens // Your package

import androidx.compose.runtime.Composable
import androidx.hilt.navigation.compose.hiltViewModel // This is the import being used
import com.example.myapp.ui.viewmodel.MyViewModel

@Composable
fun MyScreen(
viewModel: MyViewModel = hiltViewModel() // Error: 'hiltViewModel' unresolved reference
) {
// ... UI logic ...
}
< /code>
[b]Error Message:[/b]
"Unresolved reference: hiltViewModel" (or similar if there's a build error related to Hilt code generation). Previously, I also saw an error suggesting "androidx don't have hilt package" before adding the androidx.hilt:hilt-navigation-compose
зависимость явно.
Что я пробовал:

[*] Обеспечить com.google.dagge.hilt.android плагин применяется в app/build.lage.kts. ksp (libs.hilt.compiler) и реализация (libs.androidx.hilt.navigation.compose) зависимости.
[*] Мой класс приложений аннотирован с @hiltandroid и объявлен в манифесте. @Inject Constructor.
выполнил несколько синхронизации Gradle, "Clean Project" и "Rebuild Project". с версией, предположительно совместимой с моей версией Kotlin.
Что все еще может быть не так с моей настройкой рукояти, которая предотвращает разрешение hiltviewmodel ()? < /li>
< /ul>

Подробнее здесь: https://stackoverflow.com/questions/796 ... -with-hilt
Ответить

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

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

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

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

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