【发布时间】:2021-03-15 12:54:23
【问题描述】:
DI 新手,使用 Hilt 我正在尝试将由 activty 实现的接口注入到视图模型中,如下所示:
活动类:
@AndroidEntryPoint
class MainActivity : AppCompatActivity(), AnInterface{
private val mainViewModel : MainViewModel by viewModels()
// .....
}
视图模型:
@HiltViewModel
class MainViewModel : ViewModel() @Inject constructor(anInterface : AnInterface){
}
模块:
@Module
@InstallIn(ActivityComponent::class)
class ActivityModule {
@Provides
fun provideAnInterface(activity: Activity) : AnInterface = activty as AnInterface
}
给我错误:
AnInterface cannot be provided without an @Provides-annotated method.
【问题讨论】:
-
问题解决了吗?仍然有一些情况我们需要通过活动上下文来实现接口。它可能是一些单独的逻辑,并在该接口中路由
-
@Steven.Nguyen 你有什么解决办法吗?
-
@Rakesh。不幸的是,我还没有找到解决方案,但它适用于 Hilt 的 2.28.3-alpha 版本。我相信有人会遇到同样的问题。 Google 建议使用 Live Data 在 viewModel 和 UI 之间进行交互。但显然,它并不适用于所有情况。如果我们可以在 ViewModel 中使用 Interface,那就更好了
-
@Louell 你的问题解决了吗?
标签: android dependency-injection android-viewmodel dagger-hilt