使用Hilt的动态特性模块

4

在使用Hilt作为依赖注入框架时,我尝试将我的特征模块作为动态特征模块。但是,我收到了以下异常:

caused by: java.lang.ClassCastException: com.android.sample.viaplay.DaggerViaplayApplication_HiltComponents_SingletonC$ActivityRetainedCImpl$ActivityCImpl$FragmentCI cannot be cast to com.android.sample.viaplay.feature.list.ui.DashboardFragment_GeneratedInjector
        at com.android.sample.viaplay.feature.list.ui.Hilt_DashboardFragment.inject(Hilt_DashboardFragment.java:104)
        at com.android.sample.viaplay.feature.list.ui.Hilt_DashboardFragment.onAttach(Hilt_DashboardFragment.java:55)
        at androidx.fragment.app.Fragment.onAttach(Fragment.java:1783)
        at com.android.sample.viaplay.feature.list.ui.Hilt_DashboardFragment.onAttach(Hilt_DashboardFragment.java:43)

我在另一个示例中使用了Dagger而不是Dagger-Hilt,并且它按预期工作:https://github.com/alirezaeiii/SampleDaggerRx 是否可以使用动态功能模块和Hilt?如果可以,如何解决上述异常。您可以在此处找到我的源代码:https://github.com/AliRezaeiii/Hilt-MultiModule-Cache
3个回答

3

1
你可以在你的应用中继续使用Hilt,当你有动态特性模块时。 Hilt目前提供了一些基本功能,可以将绑定注入到动态特性中,但最终你需要使用Dagger来连接你的共享模块依赖项到你的Hilt依赖图,并使用Dagger多绑定来构建一个通用的解决方案来进行ViewModel注入。

0
多模块应用程序文档中的Hilt中:
在功能模块中,模块之间通常依赖关系被颠倒。因此,Hilt 无法处理功能模块中的注解。您必须使用 Dagger 在功能模块中执行依赖注入。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接