我试图使用匕首柄,我设置了一切,但当我试图使用女巫的对象时,我得到了错误,我创建了一个依赖注入:kotlin.UninitializedPropertyAccessException: lateinit property exoPlayer has not been initialized
下面是我的模块提供程序:
@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)
}
}
在我的活动中,我得到了:
@AndroidEntryPoint
class AudioActivity : AppCompatActivity(), Player.EventListener { {
@Inject
lateinit var exoPlayer: SimpleExoPlayer
然后我尝试在onCreate中添加一个侦听器
exoPlayer.addListener(this)
但是在这里我得到了一个错误,它没有初始化,我真的不明白,因为我认为依赖注入的目的是提供一个可以在任何地方注入的构造。为什么它没有被初始化?
2条答案
按热度按时间5kgi1eie1#
实际上,您在
ServiceComponent
中提供了SimpleExoPlayer
对象。由于您希望在Activity中注入SimpleExoPlayer
,因此应该在ActivityComponent
中提供它。我认为您可能需要一个模块或重用现有的模块3bygqnnd2#
您提到在
onCreate()
中的AudioActivity
中,您只添加了一个侦听器。因此,考虑到您在应用/模块中正确设置了所有插件和依赖项,您可能忘记在Activity中调用super.onCreate()
(注入魔法发生的地方),这是在您开始触摸任何注入字段之前需要的。