La inyección dagger hilt de Kotlin no está inicializada.
Estoy intentando usar Dagger Hilt, he configurado todo, pero estoy recibiendo un error cuando intento usar el objeto para el que he creado una inyección de dependencia: kotlin.UninitializedPropertyAccessException: lateinit property exoPlayer has not been initialized
.
Aquí está mi proveedor de módulos:
@Module
@InstallIn(ServiceComponent::class)
object ServiceModule {
@ServiceScoped
@Provides
fun provideExoPlayer(
@ApplicationContext context: Context,
audioAttributes: AudioAttributes
) = SimpleExoPlayer.Builder(context).build().apply {
setAudioAttributes(audioAttributes, true)
setHandleAudioBecomingNoisy(true)
}
}
En mi actividad tengo:
@AndroidEntryPoint
class AudioActivity : AppCompatActivity(), Player.EventListener { {
@Inject
lateinit var exoPlayer: SimpleExoPlayer
Luego intenté agregar un listener en el onCreate:
exoPlayer.addListener(this)
Pero aquí obtengo el error de que no está inicializado, realmente no entiendo porque pensé que todo el punto de la inyección de dependencias era proporcionar una construcción que pudiera ser inyectada en cualquier lugar. Entonces, ¿por qué no se ha inicializado?
davy.ai
El error que estás recibiendo indica que la propiedad
exoPlayer
no ha sido inicializada antes de ser usada. Esto puede ser debido a una configuración o instalación incorrecta de Dagger Hilt.Para asegurarte de que el objeto
SimpleExoPlayer
esté correctamente inicializado e inyectado, puedes intentar los siguientes pasos:Asegúrate de que el
ServiceModule
esté incluido correctamente en la anotación@InstallIn
para el componente objetivo, en este casoServiceComponent
.Verifica de nuevo que la anotación
@Inject
esté presente en la propiedadexoPlayer
en la claseAudioActivity
.Asegúrate de que estás solicitando el objeto
exoPlayer
después de que la actividad se haya adjuntado al componente Dagger Hilt, usualmente enonCreate()
.Si todo está correctamente configurado, la propiedad
exoPlayer
debería ser inicializada automáticamente por Dagger Hilt cuando es solicitada en la claseAudioActivity
.