I’m getting the error below. Does someone know how to fix it?
Below is the logcat and what I did before the error happened.
- I run the Gradle update on my project (now is gradle 8.4.1)
- Updated multiple libraries versions (including ViewModel lib – now is 2.8.0)
- Updated libs from kapt to ksp
I use Koin for injection.
class LoginRegisterActivity : AppCompatActivity() {
private lateinit var binding: FragmentLoginRegisterBinding
private val viewModel: LoginRegisterViewModel by viewModel {
parametersOf(
AuthClient(),
FireStoreClient()
)
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = FragmentLoginRegisterBinding.inflate(layoutInflater)
setContentView(binding.root)
setLoginFunction()
setRegisterUserFunction()
setForgotPasswordFunction()
}
override fun onStart() {
super.onStart()
if (AISLAuthClient.auth.currentUser != null) {
reload()
}
}
}
Caused by: java.lang.IllegalStateException: VIEW_MODEL_KEY must always be provided by ViewModelProvider
at androidx.lifecycle.AbstractSavedStateViewModelFactory.create(AbstractSavedStateViewModelFactory.kt:83)
at androidx.lifecycle.ViewModelProvider$Factory.create(ViewModelProvider.android.kt:158)
at androidx.lifecycle.viewmodel.ViewModelProviderImpl.getViewModel$lifecycle_viewmodel_release(ViewModelProviderImpl.kt:69)
at androidx.lifecycle.viewmodel.ViewModelProviderImpl.getViewModel$lifecycle_viewmodel_release$default(ViewModelProviderImpl.kt:47)
at androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.android.kt:91)
at androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.android.kt:109)
at org.koin.androidx.viewmodel.ViewModelResolverKt.resolveInstance(ViewModelResolver.kt:15)
at org.koin.androidx.viewmodel.scope.ScopeExtKt.getViewModel(ScopeExt.kt:67)
at org.koin.androidx.viewmodel.scope.ScopeExtKt.getViewModel(ScopeExt.kt:53)
at org.koin.androidx.viewmodel.scope.ScopeExtKt.getViewModel$default(ScopeExt.kt:45)
at org.koin.androidx.viewmodel.ext.android.ComponentCallbackExtKt.getViewModel(ComponentCallbackExt.kt:63)
at xxxx.xxxx.xxxx.xxxx.views.login_register.LoginRegisterActivity$special$$inlined$viewModel$default$2.invoke(ComponentCallbackExt.kt:65)
at xxxx.xxxx.xxxx.xxxx.views.login_register.LoginRegisterActivity$special$$inlined$viewModel$default$2.invoke(ComponentCallbackExt.kt:42)
at kotlin.UnsafeLazyImpl.getValue(Lazy.kt:81)
at xxxx.xxxx.xxxx.xxxx.views.login_register.LoginRegisterActivity.getViewModel(LoginRegisterActivity.kt:23)
at xxxx.xxxx.xxxx.xxxx.views.login_register.LoginRegisterActivity.setLoginFunction(LoginRegisterActivity.kt:48)
at xxxx.xxxx.xxxx.xxxx.views.login_register.LoginRegisterActivity.onCreate(LoginRegisterActivity.kt:35)
at android.app.Activity.performCreate(Activity.java:8975)
at android.app.Activity.performCreate(Activity.java:8944)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1456)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:4146)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4322)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:103)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:139)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:96)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2685)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:230)
at android.os.Looper.loop(Looper.java:319)
at android.app.ActivityThread.main(ActivityThread.java:8919)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:578)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1103)