简体   繁体   English

刀柄匕首错误 java.lang.RuntimeException:无法创建 class HomeFragmentViewModel 的实例

[英]Hilt Dagger Error java.lang.RuntimeException: Cannot create an instance of class HomeFragmentViewModel

I was trying to inject my viewModel to fragment but I have this error:我试图将我的 viewModel 注入片段,但出现此错误:

java.lang.RuntimeException: Cannot create an instance of class com.mas.cryptomasters.ui.fragment.home.HomeFragmentViewModel java.lang.RuntimeException:无法创建 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这是我的 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))
                    }
                }
        }
    }
}
  1. Ensure your activity & fragment are having @AndroidEntryPoint annotation.确保您的活动和片段具有@AndroidEntryPoint注释。
  2. Add implementation "androidx.fragment:fragment-ktx:1.4.1" to build.gradle(:app)implementation "androidx.fragment:fragment-ktx:1.4.1"添加到build.gradle(:app)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM