android - Dagger 迁移到 Hilt,@ContributesAndroidInjector 无法使用带有 @AndroidEntryPoint 注释的片段
问题描述
尝试逐屏迁移Dagger
到Hilt
. 迁移了一个活动,它工作正常,但大多数应用程序活动使用DialogFraments
,并且在为 添加注释时没@AndroidEntryPoint
问题DialogFragment
,但是旧的未迁移活动不能与该片段一起使用,出现运行时错误:
Hilt Fragments must be attached to an @AndroidEntryPoint Activity. Found: class com......MainActivity
任何想法如何使 DialogFragment 在 Hilt 和 Dagger 活动上一起工作?
在注释MainActivity
了@AndroidEntryPoint
更多的依赖注入错误之后,只有修复我才能看到然后迁移所有活动模块。
有什么更简单的方法可以让它们一起工作,以便可以逐步完成迁移,而不是整个活动模块?
解决方案
Savior ansver is @OptionalInject
and OptionalInjectCheck.wasInjectedByHilt(this)
check
这样做的方法是替换:
abstract class BaseDialogFragment : DaggerAppCompatDialogFragment() {
....
}
和
@AndroidEntryPoint
@OptionalInject
abstract class BaseDialogFragment : AppCompatDialogFragment(), HasAndroidInjector {
@Inject
lateinit var androidInjector: DispatchingAndroidInjector<Any>
override fun androidInjector() = androidInjector
override fun onAttach(context: Context) {
super.onAttach(context)
if (!OptionalInjectCheck.wasInjectedByHilt(this)) {
AndroidSupportInjection.inject(this);
}
}
....
}
它适用于新的 Hilt 活动,无需更改旧@ContributesAndroidInjector
模式,无需额外更改!
推荐阅读
- graph - 对集合中的可选关系进行建模
- javascript - 我希望我的数据用空格整齐地显示
- c++ - 对基本构造函数的条件调用
- azure - Azure Kudu 访问被 curl 拒绝
- android - ListView 不显示过滤结果
- python - Resampling a time series to year to date
- spring - 在spring boot中加载多个外部配置文件
- audiokit - #AudioKit Play sequencer audios mp3
- excel - 工作表类的移动方法失败
- swift - 致命错误:尝试评估编辑器占位符:文件 MyPlayground.playground,