2

我目前正在尝试从 dagger-android 迁移到 Hilt。以前我使用@Bind 将片段和活动的实例绑定到相应的 MVP 视图合约。有没有办法对 Hilt 做同样的事情?它似乎无法注入特定的片段和活动?

4

1 回答 1

0

我们需要一些代码来给出正确的答案,但我认为你需要类似的东西

@InstallIn(ActivityComponent::class)
@Module
abstract class MyScreenModule {

    @ActivityScoped
    @Binds
    abstract fun bindMyScreenFragment(impl: ScreenFragment): MyScreenContract.View


    @ActivityScoped
    @Binds
    abstract fun bindMyScreenPresenter(impl: ScreenPresenter): MyScreenContract.Presenter

}

不要忘记:

  • 将“@Inject”添加到 Fragment 和 Presenter 构造函数
  • 将@AndroidEntryPoint 添加到 MyScreenActivity 和 MyScreenFragment

注意:考虑 Presenter 是否应该受限于 Fragment 生命周期。在这种情况下,演示者绑定应该有它自己的模块,用@InstallIn(FragmentComponent::class)标记,并且绑定范围为 @FragmentScoped

于 2020-06-22T20:13:44.367 回答