Sobes.tech
Junior — Middle

Este posibil să folosiți aceeași ViewModel pentru schimbul de date între două fragmente în timpul navigării?

sobes.tech AI

Răspuns de la AI

Da, se poate folosi aceeași ViewModel pentru schimbul de date între două fragmente în timpul navigării, dacă ViewModel este legată de un proprietar comun al ciclului de viață, de exemplu, o Activity. În acest caz, ambele fragmente au acces la aceeași ViewModel, ceea ce le permite să schimbe date fără a le lega direct.

Exemplu:

// Obțineți ViewModel-ul legat de Activity
val sharedViewModel = ViewModelProvider(requireActivity()).get(SharedViewModel::class.java)

// Fragmentul A setează datele
sharedViewModel.someData.value = "Salut din Fragmentul A"

// Fragmentul B observă modificările
sharedViewModel.someData.observe(viewLifecycleOwner) { data ->
    // Utilizați datele primite
}

Astfel, ViewModel acționează ca o sursă comună de date între fragmente, simplificând comunicarea și păstrând datele la schimbarea configurației.