android - 错误:[Dagger/MissingBinding] java.util.ArrayList如果没有 @Inject 构造函数或 @Provides-annotated 方法,则无法提供
问题描述
错误:
error: [Dagger/MissingBinding] java.util.ArrayList<java.lang.Integer> cannot be provided without an @Inject constructor or an @Provides-annotated method.
public abstract static class SingletonC implements HiltWrapper_ActivityRetainedComponentManager_LifecycleComponentBuilderEntryPoint,
javax.inject.Provider<java.util.ArrayList<java.lang.Integer>> is injected at
space.rodionov.swedishdriller.DrillerViewModel_AssistedFactory(�, drillerCatList, �)
space.rodionov.swedishdriller.DrillerViewModel_AssistedFactory is injected at
space.rodionov.swedishdriller.DrillerViewModel_HiltModule.bind(factory)
java.util.Map<java.lang.String,javax.inject.Provider<androidx.hilt.lifecycle.ViewModelAssistedFactory<? extends androidx.lifecycle.ViewModel>>> is injected at
androidx.hilt.lifecycle.ViewModelFactoryModules.ActivityModule.provideFactory(�, viewModelFactories)
@dagger.hilt.android.internal.lifecycle.DefaultActivityViewModelFactory java.util.Set<androidx.lifecycle.ViewModelProvider.Factory> is requested at
dagger.hilt.android.internal.lifecycle.DefaultViewModelFactories.ActivityEntryPoint.getActivityViewModelFactory() [space.rodionov.swedishdriller.SwedishDrillerApplication_HiltComponents.SingletonC ? space.rodionov.swedishdriller.SwedishDrillerApplication_HiltComponents.ActivityRetainedC ? space.rodionov.swedishdriller.SwedishDrillerApplication_HiltComponents.ActivityC]
The following other entry points also depend on it:
dagger.hilt.android.internal.lifecycle.DefaultViewModelFactories.FragmentEntryPoint.getFragmentViewModelFactory() [space.rodionov.swedishdriller.SwedishDrillerApplication_HiltComponents.SingletonC ? space.rodionov.swedishdriller.SwedishDrillerApplication_HiltComponents.ActivityRetainedC ? space.rodionov.swedishdriller.SwedishDrillerApplication_HiltComponents.ActivityC ? space.rodionov.swedishdriller.SwedishDrillerApplication_HiltComponents.FragmentC][WARN] Incremental annotation processing requested, but support is disabled because the following processors are not incremental: androidx.room.RoomProcessor (DYNAMIC).
在构建项目期间尝试启动它时会发生此错误。它发生在我完成 ViewModel 代码并从 Fragment 调用它的方法之后。在我看来,我在 ViewModel 中犯了错误,但 Hilt 对我来说是新的,Kotlin 语言也是如此。感谢任何帮助。代码:
在片段中:
@AndroidEntryPoint
class DrillerFragment : Fragment(R.layout.cardstack_layout), CardStackListener {
private val viewModel: DrillerViewModel by viewModels()
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val binding = CardstackLayoutBinding.bind(view)
val drillerLayoutManager = CardStackLayoutManager(requireContext(), this) // ЧТО ПИСАТЬ В CONTEXT??
val drillerAdapter = DrillerAdapter()
binding.apply {
cardStackView.apply {
adapter = drillerAdapter
layoutManager = drillerLayoutManager
itemAnimator = null
}
}
viewModel.getLivedataList().observe(viewLifecycleOwner) {
drillerAdapter.submitList(it)
}
viewModel.get4words()
}
在视图模型中:
class DrillerViewModel @ViewModelInject constructor(
private val wordDao: WordDao,
val drillerCatList: ArrayList<Int> = ArrayList(),
val mLivedataList: MutableLiveData<List<Word>>
) : ViewModel() {
val shownCategoriesFlow = wordDao.getShownCategoriesNumbers()
fun getLivedataList(): LiveData<List<Word>> {
return mLivedataList
}
fun get4words() = viewModelScope.launch {
shownCategoriesFlow.collect {
it.forEach { catNumber ->
drillerCatList.add(catNumber)
}
}
wordDao.get4words(drillerCatList).collect {
mLivedataList.value = it
}
}
}
解决方案
在构造函数中创建你的变量
val drillerCatList: ArrayList<Int> = ArrayList(),
val mLivedataList: MutableLiveData<List<Word>>
如果您不通过 Hilt 注入它们,则作为类中的普通变量
推荐阅读
- node.js - <%- %> 不转义特殊字符
- prestashop-1.7 - 我正在尝试在 prestashop 中开发一项功能以应用促销
- javascript - Javascript .filter() -> 无法读取 null 的属性“X”
- python - 我得到了“nan”的损失价值,同时遵循了 huggingface 文档中的“Question Answering with SQuAD 2.0”
- javascript - 将文件名传递给 Emscripten 生成的 js 作为参数
- python - 为什么 PDFPlumber 不能与 PysimpleGUI 一起使用?
- python - Tkinter 在多个帧上更改窗口大小
- reactjs - 页面刷新时 React UseContext 丢失数据
- android - 接收方还是服务方?或者两者兼而有之?
- slack-api - 识别我的应用在 Slack 中发布的消息