android - 带类的 Hilt 依赖注入在 ViewModel 构造函数中
问题描述
有人可以帮忙解决这个 Hilt Dependency injection 问题吗?代码可在此处获得: https ://gist.github.com/nyxee/bfb2fd3b2a29d886479f5bc54d836e36
我得到的错误信息是:
error: cannot find symbol private final Provider<Class<T>> clazz;
class ClubsViewModel<T> @ViewModelInject constructor(clazz: Class<T>) : BaseViewModel<T>(clazz) {
listenToFireStoreCollection("Clubs", _mClubs)
...
}
class BViewModel<T> @ViewModelInject constructor(clazz: Class<T>) : BaseViewModel<T>(clazz) {
private var _mBs = MutableLiveData<List<T>>()
listenToFireStoreCollection("Bname", _mBs)
...
}
class BaseViewModel<T> @ViewModelInject constructor(val clazz: Class<T>) {
protected val mFirestore = Firebase.firestore
protected fun listenToFireStoreCollection(val collectionName: String, liveData: MutableLiveData<List<T>>)
mFirestore.collection(collectionName).addSnapshotListener { snapshot, e ->
if (e != null) {
return@addSnapshotListener
}
if (snapshot != null) {
liveData.value = snapshot.documents.mapNotNull { it.toObject(clazz) }
}
}
}
}
//FRAGMENT EXAMPLES.
@AndroidEntryPoint
class ClubsFragment : Fragment() {
private val mClubsViewModel: ClubsViewModel<ClubsFSEntity> by viewModels()
...
}
@AndroidEntryPoint
class BsFragment : Fragment() {
private val mBsViewModel: BsViewModel<BsFSEntity> by viewModels()
...
}
--------------------------------------------------------------------------
//TRYING TO CREATE A HILT PROVIDER
@Module
@InstallIn(ApplicationComponent::class)
object FragmentModule {
@Singleton
@Provides
inline fun <reified T> provideVMEntityClass(): Class<T> = T::class.java
}
解决方案
推荐阅读
- c# - C# ConcurrentBag - 如何安全地清除每 N 个添加的对象
- mysql - 列出分配到“东伦敦十字路口”项目的所有已婚员工及其配偶的姓名
- jquery - jquery函数在偶尔完成之前退出
- android - 升级奥利奥后如何在三星触发前置闪光灯
- javascript - 如何将带有对象的数组从提供者传递到页面?
- vue.js - 在创建的数据 api 完成加载之前运行的挂载钩子
- c# - 使用 INotifyPropertyChanged 与类似 WinForms 的事件处理程序有什么优势?
- php - 我的 PHP 脚本不断抛出“内存不足”
- pandas - 使用替代方法对分组进行排序时保持顺序?
- bash - for循环中的远程服务器数组参数