Hilt Android ViewModel 没有零参数构造函数

时间:2021-04-19 20:04:16

标签: android dagger-hilt

我用 Hilt 构造了一个 ViewModel

@HiltViewModel
class RegisterViewModel @Inject constructor(
    private val savedStateHandle: SavedStateHandle,
    private val networkClient: NetworkClient
) : ViewModel() {}

但是当我运行应用程序时,它给了我一个错误:

java.lang.RuntimeException: Cannot create an instance of class com.package_name.RegisterViewModel
        at androidx.lifecycle.ViewModelProvider$NewInstanceFactory.create(ViewModelProvider.java:221)
        at androidx.lifecycle.ViewModelProvider$AndroidViewModelFactory.create(ViewModelProvider.java:278)
        at androidx.lifecycle.SavedStateViewModelFactory.create(SavedStateViewModelFactory.java:112)
        at androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.java:185)
        at androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.java:150)
        at androidx.lifecycle.ViewModelLazy.getValue(ViewModelProvider.kt:54)
        at androidx.lifecycle.ViewModelLazy.getValue(ViewModelProvider.kt:41)
        at path_of_project.register.RegisterFragment.getRegisterViewModel(Unknown Source:2)
        at path_of_project.ui.auth.register.RegisterFragment.onViewCreated(RegisterFragment.kt:53)
        at androidx.fragment.app.Fragment.performViewCreated(Fragment.java:2974)
        at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:543)
        at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:282)
        at androidx.fragment.app.FragmentStore.moveToExpectedState(FragmentStore.java:112)

一切看起来都很好。甚至设置:

    implementation "com.google.dagger:hilt-android:$hilt_version"
    kapt "com.google.dagger:hilt-compiler:$hilt_version"

我做错了什么?

1 个答案:

答案 0 :(得分:1)

在这种情况下。确保不要忘记用 Fragment 注释 Activity@AndroidEntryPoint

@AndroidEntryPoint
class RegisterFragment : Fragment(R.layout.fragment_register) {}

如果不是这种情况,请参阅 here