【发布时间】:2021-02-04 19:19:01
【问题描述】:
我不确定这是否是 Dagger Hilt 库的限制,但我似乎无法从活动中的不同模块注入 ViewModel。
Project:
:modA (OrderViewModel with @HiltViewModel annotation)
:modUI (DI stuff here that injects OrderViewModel in Activity) with dependency on modA
:modOther
@HiltViewModel
class OrderViewModel @Inject constructor(
private val loadOrdersUseCase: LoadOrdersUseCase,
private val updateOrderUseCase: UpdateOrderUseCase,
private val mapper: OrderDataMapper,
) : SharedViewModel<OrderDataModel>()
像这样注入的:
private val orderViewModel: OrderViewModel by viewModels()
我看不到分别生成的 OrderViewModel_HiltModules 和 OrderViewModel_HiltModules 类。事实上,当我运行应用程序时,它会崩溃并出现下面的崩溃,这表明他们的 ViewModel 不在 hilt 应该创建的 ViewModel 键盘映射中。
Caused by: java.lang.RuntimeException: Cannot create an instance of class com.rowland.delivery.presentation.viewmodels.order.OrderViewModel
.
.
.
Caused by: java.lang.InstantiationException: java.lang.Class<com.rowland.delivery.presentation.viewmodels.order.OrderViewModel> has no zero argument constructor
at java.lang.Class.newInstance(Native Method)
at androidx.lifecycle.ViewModelProvider$NewInstanceFactory.create(ViewModelProvider.java:219)
这是匕首的限制吗?任何见解将不胜感激。
有时间复现的可以看一下下面的代码分支:
【问题讨论】:
标签: android dagger-2 android-viewmodel dagger-hilt