Моя модель HiltViewModel с базой данных:
@Module
@InstallIn(SingletonComponent::class)
object AppDatabaseModule {
@Provides
@Singleton
fun providesAppDatabase(
@ApplicationContext applicationContext: Context,
): AppDatabase = Room.databaseBuilder(
context = applicationContext,
klass = AppDatabase::class.java,
name = "database",
).build()
@Provides
fun providesDataDao(db: AppDatabase): DataDao = db.dataDao()
}
@HiltViewModel
class DataModel @Inject constructor (
dataDao: DataDao,
) : ViewModel() {
val data: StateFlow = dataDao.getAll()
.stateIn(
scope = viewModelScope,
started = SharingStarted.WhileSubscribed(5),
initialValue = emptyList(),
)
}
@Database(entities = [Data::class], version = 1)
abstract class AppDatabase: RoomDatabase() {
abstract fun dataDao(): DataDao
}
@Entity (tableName = "data")
data class Data(
@PrimaryKey(autoGenerate = true)
val uid: Int = 0,
val str: String
)
@Dao
interface DataDao {
@Query("SELECT * FROM data")
fun getAll(): Flow
}
Когда я включаю dataModel: DataModel = hiltViewModel() в представление @Composable, приложение аварийно завершает работу. Как это решить?
Сообщения об ошибках:
FATAL EXCEPTION: main Process: com.example.app, PID: 3540 java.lang.IllegalStateException: Given component holder class com.example.app.MainActivity does not implement interface dagger.hilt.internal.GeneratedComponent or interface dagger.hilt.internal.GeneratedComponentManager
at dagger.hilt.EntryPoints.get(EntryPoints.java:62)
at dagger.hilt.android.internal.lifecycle.HiltViewModelFactory.createInternal(HiltViewModelFactory.java:206)
at androidx.hilt.navigation.HiltViewModelFactory.create(HiltNavBackStackEntry.kt:75) a t a n d r o i d x . h i l t . n a v i g a t i o n . c o m p o s e . H i l t V i e w M o d e l K t . c r e a t e H i l t V i e w M o d e l F a c t o r y ( H i l t V i e w M o d e l . k t : 9 5 ) < b r / > a t c o m . e x a m p l e . a p p . V i e w K t . V i e w ( V i e w . k t : 1 1 6 ) < b r / > a t c o m . e x a m p l e . a p p . N a v i g a t i o n B a r K t $ A p p N a v H o s t $ 1 $ 1 $ 1 $ 1 . i n v o k e ( N a v i g a t i o n B a r . k t : 8 9 ) < b r / > a t c o m . e x a m p l e . a p p . N a v i g a t i o n B a r K t $ A p p N a v H o s t $ 1 $ 1 $ 1 $ 1 . i n v o k e ( N a v i g a t i o n B a r . k t : 8 7 ) < b r / > a t a n d r o i d x . c o m p o s e . r u n t i m e . i n t e r n a l . C o m p o s a b l e L a m b d a I m p l . i n v o k e ( C o m p o s a b l e L a m b d a . k t : 1 3 0 ) < b r / > a t a n d r o i d x . c o m p o s e . r u n t i m e . i n t e r n a l . C o m p o s a b l e L a m b d a I m p l . i n v o k e ( C o m p o s a b l e L a m b d a . k t : 5 1 ) < b r / > a t a n d r o i d x . n a v i g a t i o n . c o m p o s e . N a v H o s t K t $ NavHost$4$2.invoke(NavHost.kt:163)
at androidx.navigation.compose.NavHostKt$NavHost$4$2.invoke(NavHost.kt:162)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:121)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:51)
at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:384)
at androidx.compose.runtime.saveable.SaveableStateHolderImpl.SaveableStateProvider(SaveableStateHolder.kt:79)
at androidx.navigation.compose.NavBackStackEntryProviderKt.SaveableStateProvider(NavBackStackEntryProvider.kt:60)
at androidx.navigation.compose.NavBackStackEntryProviderKt.access$SaveableStateProvider(NavBackStackEntryProvider.kt:1)
at androidx.navigation.compose.NavBackStackEntryProviderKt$LocalOwnersProvider$1.invoke(NavBackStackEntryProvider.kt:52)
at androidx.navigation.compose.NavBackStackEntryProviderKt$LocalOwnersProvider$1.invoke(NavBackStackEntryProvider.kt:51)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:121)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:51)
at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:364)
at androidx.navigation.compose.NavBackStackEntryProviderKt.LocalOwnersProvider(NavBackStackEntryProvider.kt:47)
at androidx.navigation.compose.NavHostKt$NavHost$4.invoke(NavHost.kt:162)
at androidx.navigation.compose.NavHostKt$NavHost$4.invoke(NavHost.kt:141)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:130)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:51)
at androidx.compose.animation.CrossfadeKt$Crossfade$5$1.invoke(Crossfade.kt:130)
at androidx.compose.animation.CrossfadeKt$Crossfade$5$1.invoke(Crossfade.kt:125)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:121)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:51)
at androidx.compose.animation.CrossfadeKt.Crossfade(Crossfade.kt:136)
at androidx.compose.animation.CrossfadeKt.Crossfade(Crossfade.kt:71)
at androidx.navigation.compose.NavHostKt.NavHost(NavHost.kt:141)
at androidx.navigation.compose.NavHostKt$NavHost$5.invoke(Unknown Source:13)
at androidx.navigation.compose.NavHostKt$NavHost$5.invoke(Unknown Source:10)
at androidx.compose.runtime.RecomposeScopeImpl.compose(RecomposeScopeImpl.kt:235)
at androidx.compose.runtime.ComposerImpl.recomposeToGroupEnd(Composer.kt:2838)
at androidx.compose.runtime.ComposerImpl.skipCurrentGroup(Composer.kt:3158)
at androidx.compose.runtime.ComposerImpl.doCompose-aFTiNEg(Composer.kt:3706)
at androidx.compose.runtime.ComposerImpl.recompose-aFTiNEg$runtime_release(Composer.kt:3648)
2025-10-13 16:10:51.621 3540-3540 AndroidRuntime com.example.app E at androidx.compose.runtime.CompositionImpl.recompose(Composition.kt:1002)
at androidx.compose.runtime.Recomposer.performRecompose(Recomposer.kt:1266)
at androidx.compose.runtime.Recomposer.access$performRecompose(Recomposer.kt:142)
at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$1.invoke(Recomposer.kt:620)
at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$1.invoke(Recomposer.kt:591)
at androidx.compose.ui.platform.AndroidUiFrameClock$withFrameNanos$2$callback$1.doFrame(AndroidUiFrameClock.android.kt:39)
at androidx.compose.ui.platform.AndroidUiDispatcher.performFrameDispatch(AndroidUiDispatcher.android.kt:108)
at androidx.compose.ui.platform.AndroidUiDispatcher.access$performFrameDispatch(AndroidUiDispatcher.android.kt:41)
at androidx.compose.ui.platform.AndroidUiDispatcher$dispatchCallback$1.doFrame(AndroidUiDispatcher.android.kt:69)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1568)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1579)
at android.view.Choreographer.doCallbacks(Choreographer.java:1179)
at android.view.Choreographer.doFrame(Choreographer.java:1104)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1553)
at android.os.Handler.handleCallback(Handler.java:995)
at android.os.Handler.dispatchMessage(Handler.java:103)
at android.os.Looper.loopOnce(Looper.java:248)
at android.os.Looper.loop(Looper.java:338)
at android.app.ActivityThread.main(ActivityThread.java:9067)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:593)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:932)
Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [androidx.compose.runtime.PausableMonotonicFrameClock@d8ff5b0, androidx.compose.ui.platform.MotionDurationScaleImpl@9476c29, StandaloneCoroutine{Cancelling}@713bbae, AndroidUiDispatcher@d2a1d4f]
2025-10-13 16:10:51.632 3540-3540 Process com.example.app I Sending signal. PID: 3540 SIG: 9
2025-10-13 16:10:51.642 626-722 InputDispatcher pid-626 E channel '77b4433 com.example.app/com.example.app.MainActivity' ~ Channel is unrecoverably broken and will be disposed!
Подробнее здесь: https://stackoverflow.com/questions/797 ... tviewmodel
Сбой приложения Android при реализации HiltViewModel ⇐ Android
Форум для тех, кто программирует под Android
-
Anonymous
1760443243
Anonymous
Моя модель HiltViewModel с базой данных:
@Module
@InstallIn(SingletonComponent::class)
object AppDatabaseModule {
@Provides
@Singleton
fun providesAppDatabase(
@ApplicationContext applicationContext: Context,
): AppDatabase = Room.databaseBuilder(
context = applicationContext,
klass = AppDatabase::class.java,
name = "database",
).build()
@Provides
fun providesDataDao(db: AppDatabase): DataDao = db.dataDao()
}
@HiltViewModel
class DataModel @Inject constructor (
dataDao: DataDao,
) : ViewModel() {
val data: StateFlow = dataDao.getAll()
.stateIn(
scope = viewModelScope,
started = SharingStarted.WhileSubscribed(5),
initialValue = emptyList(),
)
}
@Database(entities = [Data::class], version = 1)
abstract class AppDatabase: RoomDatabase() {
abstract fun dataDao(): DataDao
}
@Entity (tableName = "data")
data class Data(
@PrimaryKey(autoGenerate = true)
val uid: Int = 0,
val str: String
)
@Dao
interface DataDao {
@Query("SELECT * FROM data")
fun getAll(): Flow
}
Когда я включаю dataModel: DataModel = hiltViewModel() в представление @Composable, приложение аварийно завершает работу. Как это решить?
Сообщения об ошибках:
FATAL EXCEPTION: main Process: com.example.app, PID: 3540 java.lang.IllegalStateException: Given component holder class com.example.app.MainActivity does not implement interface dagger.hilt.internal.GeneratedComponent or interface dagger.hilt.internal.GeneratedComponentManager
at dagger.hilt.EntryPoints.get(EntryPoints.java:62)
at dagger.hilt.android.internal.lifecycle.HiltViewModelFactory.createInternal(HiltViewModelFactory.java:206)
at androidx.hilt.navigation.HiltViewModelFactory.create(HiltNavBackStackEntry.kt:75) a t a n d r o i d x . h i l t . n a v i g a t i o n . c o m p o s e . H i l t V i e w M o d e l K t . c r e a t e H i l t V i e w M o d e l F a c t o r y ( H i l t V i e w M o d e l . k t : 9 5 ) < b r / > a t c o m . e x a m p l e . a p p . V i e w K t . V i e w ( V i e w . k t : 1 1 6 ) < b r / > a t c o m . e x a m p l e . a p p . N a v i g a t i o n B a r K t $ A p p N a v H o s t $ 1 $ 1 $ 1 $ 1 . i n v o k e ( N a v i g a t i o n B a r . k t : 8 9 ) < b r / > a t c o m . e x a m p l e . a p p . N a v i g a t i o n B a r K t $ A p p N a v H o s t $ 1 $ 1 $ 1 $ 1 . i n v o k e ( N a v i g a t i o n B a r . k t : 8 7 ) < b r / > a t a n d r o i d x . c o m p o s e . r u n t i m e . i n t e r n a l . C o m p o s a b l e L a m b d a I m p l . i n v o k e ( C o m p o s a b l e L a m b d a . k t : 1 3 0 ) < b r / > a t a n d r o i d x . c o m p o s e . r u n t i m e . i n t e r n a l . C o m p o s a b l e L a m b d a I m p l . i n v o k e ( C o m p o s a b l e L a m b d a . k t : 5 1 ) < b r / > a t a n d r o i d x . n a v i g a t i o n . c o m p o s e . N a v H o s t K t $ NavHost$4$2.invoke(NavHost.kt:163)
at androidx.navigation.compose.NavHostKt$NavHost$4$2.invoke(NavHost.kt:162)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:121)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:51)
at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:384)
at androidx.compose.runtime.saveable.SaveableStateHolderImpl.SaveableStateProvider(SaveableStateHolder.kt:79)
at androidx.navigation.compose.NavBackStackEntryProviderKt.SaveableStateProvider(NavBackStackEntryProvider.kt:60)
at androidx.navigation.compose.NavBackStackEntryProviderKt.access$SaveableStateProvider(NavBackStackEntryProvider.kt:1)
at androidx.navigation.compose.NavBackStackEntryProviderKt$LocalOwnersProvider$1.invoke(NavBackStackEntryProvider.kt:52)
at androidx.navigation.compose.NavBackStackEntryProviderKt$LocalOwnersProvider$1.invoke(NavBackStackEntryProvider.kt:51)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:121)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:51)
at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:364)
at androidx.navigation.compose.NavBackStackEntryProviderKt.LocalOwnersProvider(NavBackStackEntryProvider.kt:47)
at androidx.navigation.compose.NavHostKt$NavHost$4.invoke(NavHost.kt:162)
at androidx.navigation.compose.NavHostKt$NavHost$4.invoke(NavHost.kt:141)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:130)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:51)
at androidx.compose.animation.CrossfadeKt$Crossfade$5$1.invoke(Crossfade.kt:130)
at androidx.compose.animation.CrossfadeKt$Crossfade$5$1.invoke(Crossfade.kt:125)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:121)
at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:51)
at androidx.compose.animation.CrossfadeKt.Crossfade(Crossfade.kt:136)
at androidx.compose.animation.CrossfadeKt.Crossfade(Crossfade.kt:71)
at androidx.navigation.compose.NavHostKt.NavHost(NavHost.kt:141)
at androidx.navigation.compose.NavHostKt$NavHost$5.invoke(Unknown Source:13)
at androidx.navigation.compose.NavHostKt$NavHost$5.invoke(Unknown Source:10)
at androidx.compose.runtime.RecomposeScopeImpl.compose(RecomposeScopeImpl.kt:235)
at androidx.compose.runtime.ComposerImpl.recomposeToGroupEnd(Composer.kt:2838)
at androidx.compose.runtime.ComposerImpl.skipCurrentGroup(Composer.kt:3158)
at androidx.compose.runtime.ComposerImpl.doCompose-aFTiNEg(Composer.kt:3706)
at androidx.compose.runtime.ComposerImpl.recompose-aFTiNEg$runtime_release(Composer.kt:3648)
2025-10-13 16:10:51.621 3540-3540 AndroidRuntime com.example.app E at androidx.compose.runtime.CompositionImpl.recompose(Composition.kt:1002)
at androidx.compose.runtime.Recomposer.performRecompose(Recomposer.kt:1266)
at androidx.compose.runtime.Recomposer.access$performRecompose(Recomposer.kt:142)
at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$1.invoke(Recomposer.kt:620)
at androidx.compose.runtime.Recomposer$runRecomposeAndApplyChanges$2$1.invoke(Recomposer.kt:591)
at androidx.compose.ui.platform.AndroidUiFrameClock$withFrameNanos$2$callback$1.doFrame(AndroidUiFrameClock.android.kt:39)
at androidx.compose.ui.platform.AndroidUiDispatcher.performFrameDispatch(AndroidUiDispatcher.android.kt:108)
at androidx.compose.ui.platform.AndroidUiDispatcher.access$performFrameDispatch(AndroidUiDispatcher.android.kt:41)
at androidx.compose.ui.platform.AndroidUiDispatcher$dispatchCallback$1.doFrame(AndroidUiDispatcher.android.kt:69)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1568)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1579)
at android.view.Choreographer.doCallbacks(Choreographer.java:1179)
at android.view.Choreographer.doFrame(Choreographer.java:1104)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1553)
at android.os.Handler.handleCallback(Handler.java:995)
at android.os.Handler.dispatchMessage(Handler.java:103)
at android.os.Looper.loopOnce(Looper.java:248)
at android.os.Looper.loop(Looper.java:338)
at android.app.ActivityThread.main(ActivityThread.java:9067)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:593)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:932)
Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [androidx.compose.runtime.PausableMonotonicFrameClock@d8ff5b0, androidx.compose.ui.platform.MotionDurationScaleImpl@9476c29, StandaloneCoroutine{Cancelling}@713bbae, AndroidUiDispatcher@d2a1d4f]
2025-10-13 16:10:51.632 3540-3540 Process com.example.app I Sending signal. PID: 3540 SIG: 9
2025-10-13 16:10:51.642 626-722 InputDispatcher pid-626 E channel '77b4433 com.example.app/com.example.app.MainActivity' ~ Channel is unrecoverably broken and will be disposed!
Подробнее здесь: [url]https://stackoverflow.com/questions/79788185/android-app-crashing-when-implementing-a-hiltviewmodel[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия