【发布时间】:2020-10-12 15:42:17
【问题描述】:
我将 dagger2 用于 DI,并针对单个活动进行开发。所以我在启动主要活动时确实注入了一个片段,并且片段也注入了这个视图模型。但是当我在匕首片段中注入视图模型时会出现问题。如果我不在匕首片段中使用构造函数@Inject,ViewModel 运行良好但不能在 MainActivity 注入。如果我在匕首片段中使用构造函数 @Inject,ViewModel 将无法正常工作并出现这样的错误
A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptExecution
我应该放弃一个吗?
MainActivity
@Inject
lateinit var myFolderFragment:MyFolderFragment
myFolderFragment:MyFolderFragment
class MyFolderFragment @Inject constructor(): DaggerFragment() {
@Inject
lateinit var viewModelFactory : ViewModelProvider.Factory
private val viewModel by viewModels<MyFolderViewModel> { viewModelFactory }
private lateinit var binding : FragmentMyfolderBinding
private var mActivity:Activity?=null
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
binding = FragmentMyfolderBinding.inflate(layoutInflater, container, false).apply {
viewmodel = viewModel
}
return binding.root
}
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
binding.lifecycleOwner = this.viewLifecycleOwner
}
【问题讨论】: