HILT DAGGER错误Java.lang.luntimeException:无法创建类HomeFragmentViewModel的实例
我试图将视图模型注入片段,但是我有一个错误:
创建com.mas.mas.mas.cryptomasters.ui.fragment.home.home.home.homefragmentviewmodel的实例
java.lang.runtimeexception
class HomeFragment : BaseFragment<FragmentHomeBinding>() {
private val viewModel: HomeFragmentViewModel by viewModels()
override fun init() {
viewModel.homeMutable.observe(this) {
when {
it.reLogin -> requireActivity().reLogin()
it.error.isNotEmpty() -> requireContext().crToast()
it.data != null -> Log.e("TAG", "data != null")
}
}
}
}
:无法
@HiltViewModel
class HomeFragmentViewModel @Inject constructor(apiRepository: ApiRepository) :
ViewModel() {
val homeMutable: MutableLiveData<Response> = MutableLiveData()
init {
viewModelScope.launch {
apiRepository.getHome()
.let {
when (it.isRequestSuccess(it.body()!!.code)) {
RESPONSE.SUCCESS -> homeMutable.postValue(Response(it.body()!!))
RESPONSE.ERROR -> homeMutable.postValue(Response(error = "${it.errorBody()}"))
RESPONSE.AUT -> homeMutable.postValue(Response(reLogin = true))
}
}
}
}
}
I was trying to inject my viewModel to fragment but I have this error :
java.lang.RuntimeException: Cannot create an instance of class com.mas.cryptomasters.ui.fragment.home.HomeFragmentViewModel
My Code :
class HomeFragment : BaseFragment<FragmentHomeBinding>() {
private val viewModel: HomeFragmentViewModel by viewModels()
override fun init() {
viewModel.homeMutable.observe(this) {
when {
it.reLogin -> requireActivity().reLogin()
it.error.isNotEmpty() -> requireContext().crToast()
it.data != null -> Log.e("TAG", "data != null")
}
}
}
}
And this my ViewModel class
@HiltViewModel
class HomeFragmentViewModel @Inject constructor(apiRepository: ApiRepository) :
ViewModel() {
val homeMutable: MutableLiveData<Response> = MutableLiveData()
init {
viewModelScope.launch {
apiRepository.getHome()
.let {
when (it.isRequestSuccess(it.body()!!.code)) {
RESPONSE.SUCCESS -> homeMutable.postValue(Response(it.body()!!))
RESPONSE.ERROR -> homeMutable.postValue(Response(error = "${it.errorBody()}"))
RESPONSE.AUT -> homeMutable.postValue(Response(reLogin = true))
}
}
}
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
@androidentrypoint
注释。实现“ Androidx.Fragment:Fragment-ktx:1.4.1”
tobuild> build.gradle(:app)
@AndroidEntryPoint
annotation.implementation "androidx.fragment:fragment-ktx:1.4.1"
tobuild.gradle(:app)