Ответ
Да, общая ViewModel будет использоваться, если оба фрагмента находятся в пределах одного Activity. ViewModel хранится в Activity scope, поэтому фрагменты могут получить доступ к одной ViewModel через ViewModelProvider(requireActivity()).
Пример:
// В обоих фрагментах
val sharedViewModel: SharedViewModel by activityViewModels()
// SharedViewModel.kt
class SharedViewModel : ViewModel() {
val sharedData = MutableLiveData<String>()
}
Нюансы:
- Если фрагменты в разных Activity, ViewModel будет разной.
- Не злоупотребляйте общей ViewModel, чтобы не создавать сильную связь между фрагментами.
- Для навигации между фрагментами лучше использовать Navigation Component с Safe Args.