Arun
Arun

Reputation: 550

UninitializedPropertyAccessException using Hilt

@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

Answers (1)

Brandon
Brandon

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

Related Questions