So previously this code was working fine (2.0.1
).
abstract class ActivityBaseViewModel<out VM : ViewModel>(clazz: KClass<VM>) : AppCompatActivity() {
protected val viewModel: VM by viewModel(clazz)
Then I updated Koin to 2.2.2
and now it can't compile this code:
Cannot use 'VM' as reified type parameter. Use a class instead.
Seems there is no alternative function like this anymore.
So another solution would be like this:
base view model activity (or fragment)
abstract class ActivityBaseViewModel<out VM : ViewModel> : AppCompatActivity() {
protected abstract val viewModel: VM
...
}
and then in a specific activity (or fragment):
class MainActivity : ActivityBaseViewModel<MainActivityViewModel>() {
override val viewModel: MainActivityViewModel by viewModel()
...
}