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