HILT DAGGER错误Java.lang.luntimeException:无法创建类HomeFragmentViewModel的实例

发布于 2025-01-18 13:28:36 字数 1375 浏览 0 评论 0原文

我试图将视图模型注入片段,但是我有一个错误:

创建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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

幻想少年梦 2025-01-25 13:28:36
  1. 确保您的活动&amp;片段具有@androidentrypoint注释。
  2. 添加实现“ Androidx.Fragment:Fragment-ktx:1.4.1” to build> build.gradle(:app)
  1. Ensure your activity & fragment are having @AndroidEntryPoint annotation.
  2. Add implementation "androidx.fragment:fragment-ktx:1.4.1" to build.gradle(:app)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文