I can manage to retrieve a ViewModel associated with a Fragment but not with an Activity.
This works :
-Fragment-
private val mainViewModel: MainViewModel by viewModels()
-Custom View-
private val mainViewModel by lazy {
ViewModelProvider(findViewTreeViewModelStoreOwner()!!).get<MainViewModel>()
}
But not that :
-Fragment-
private val mainViewModel: MainViewModel by activityViewModels()
-Custom View-
private val mainViewModel by lazy {
ViewModelProvider(findViewTreeViewModelStoreOwner()!!).get<MainViewModel>()
}
I solved this problem by casting the Activity of the custom View to ViewModelStoreOwner and getting a ViewModel from ViewModelProvider created with this Activity :
private val mainViewModel by lazy {
ViewModelProvider(context as ViewModelStoreOwner).get<MainViewModel>()
}