Junior — Middle
Може ли да използвате една и съща ViewModel за обмен на данни между два фрагмента по време на навигация?
sobes.tech AI
Отговор от AI
Да, може да се използва една и съща ViewModel за обмен на данни между два фрагмента по време на навигация, ако ViewModel е свързана с общ собственик на жизнения цикъл, например, с Activity. В този случай и двата фрагмента имат достъп до една и съща ViewModel, което им позволява да обменят данни без да ги свързват директно.
Пример:
// Получаване на ViewModel, свързана с Activity
val sharedViewModel = ViewModelProvider(requireActivity()).get(SharedViewModel::class.java)
// Фрагмент А задава данни
sharedViewModel.someData.value = "Здравей от Фрагмент А"
// Фрагмент Б наблюдава промените
sharedViewModel.someData.observe(viewLifecycleOwner) { data ->
// Използване на получените данни
}
Така ViewModel служи като общ източник на данни между фрагментите, улеснявайки комуникацията и запазвайки данните при промяна на конфигурацията.