1
@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?

Arun
  • 510
  • 1
  • 4
  • 21

1 Answers1

1

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() }
}
Brandon
  • 1,158
  • 3
  • 12
  • 22