Reputation: 550
@Module
@InstallIn(ApplicationComponent::class)
object AppDataModule {
@Provides
@Singleton
fun provideAU(loginPreferences: LoginPreferences, @ApplicationContext context: Context): AccountUtil = AccountUtil (loginPreferences, context)
}
class SomeClass {
@Inject
lateinit var accountUtil: AccountUtil
constructor(context:Context){}
constructor(context:Context, obj:SomeClass1){}
init {
accountUtil.isLoggedIn()
}
}
I got
kotlin.UninitializedPropertyAccessException: lateinit property accountUtil has not been initialized
How can i resolve this one? is i need to use custom component in Hilt?
Upvotes: 2
Views: 524
Reputation: 1407
Make sure you have your application as a @HiltApplication
@HiltAndroidApp class Application: Application()
Then once you've created a module like so
@Module
@InstallIn(ApplicationComponent::class)
object AppDataModule {
@Provides
@Singleton
fun provideAU(loginPreferences: LoginPreferences, @ApplicationContext context: Context): AccountUtil = AccountUtil (loginPreferences, context)
}
Make sure the class you're wanting to inject is injected in the constructor
class SomeClass @Inject constructor(private var accountUtil: AccountUtil) {
init { accountUtil.isLoggedIn() }
}
class SomeClass @Inject constructor(){
@Inject constructor(private var accountUtil: AccountUtil)
@Inject constructor(private var util1: AccountUtil, private var util2: AccountUtil)
init { accountUtil.isLoggedIn() }
}
Upvotes: 1