我用 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"
我做错了什么?
答案 0 :(得分:1)
在这种情况下。确保不要忘记用 Fragment
注释 Activity
或 @AndroidEntryPoint
:
@AndroidEntryPoint
class RegisterFragment : Fragment(R.layout.fragment_register) {}
如果不是这种情况,请参阅 here。