es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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?

Tags:  , , , ,

Answer

  1. Avatar for 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:

    1. Verifica que has configurado correctamente Dagger Hilt chequeando que las dependencias y anotaciones necesarias estén en su lugar.
    2. Asegúrate de que el ServiceModule esté incluido correctamente en la anotación @InstallIn para el componente objetivo, en este caso ServiceComponent.

    3. Verifica de nuevo que la anotación @Inject esté presente en la propiedad exoPlayer en la clase AudioActivity.

    4. Asegúrate de que estás solicitando el objeto exoPlayer después de que la actividad se haya adjuntado al componente Dagger Hilt, usualmente en onCreate().

    Si todo está correctamente configurado, la propiedad exoPlayer debería ser inicializada automáticamente por Dagger Hilt cuando es solicitada en la clase AudioActivity.

Comments are closed.