-
Notifications
You must be signed in to change notification settings - Fork 1
Hilt_도입_과정에서의_오류
yujin45 edited this page Nov 7, 2024
·
1 revision
ViewModel에서 Repository를 **@Inject
**로 주입해주는 과정에서 다음과 같은 에러 발생
hilt cannot be provided without an @Provides-annotated method
Repository 관련 모듈을 생성해주지 않아서 생긴 문제
HiltModule에 Repository 등록
@Singleton
@Provides
fun providerRepository(
...
): DataRepository = DataRepositoryImpl(...)
Compose에서 ViewModel 주입하는 과정에서의 에러
java.lang.RuntimeException: Cannot create an instance of class
Hilt로 주입 받는 ViewModel에서 viewModel()
로 선언
viewModel()에서 주입하는 과정
@Suppress("MissingJvmstatic")
@Composable
public inline fun <reified VM : ViewModel> viewModel(
viewModelStoreOwner: ViewModelStoreOwner = checkNotNull(LocalViewModelStoreOwner.current) {
"No ViewModelStoreOwner was provided via LocalViewModelStoreOwner"
},
key: String? = null,
factory: ViewModelProvider.Factory? = null,
extras: CreationExtras = if (viewModelStoreOwner is HasDefaultViewModelProviderFactory) {
viewModelStoreOwner.defaultViewModelCreationExtras
} else {
CreationExtras.Empty
}
): VM = viewModel(VM::class, viewModelStoreOwner, key, factory, extras)
위와 같이 viewModel()로 주입하게 되면 생성자가 없는 기본 팩토리로 ViewModel을 생성하기 때문에 생성자가 있는 ViewModel에서는 에러가 발생하게 된다.
Compose에서 Hilt로 주입 받는 ViewModel을 사용할 때엔 hiltViewModel()
을 사용
데일리 스크럼
1주차
2주차
3주차
4주차
5주차
회의록
1주차
2주차
3주차
4주차
5주차