Sobes.tech
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 служи като общ източник на данни между фрагментите, улеснявайки комуникацията и запазвайки данните при промяна на конфигурацията.