Junior — Middle
Je možné použiť rovnakú ViewModel na výmenu údajov medzi dvoma fragmentmi počas navigácie?
sobes.tech AI
Odpoveď od AI
Áno, je možné použiť rovnakú ViewModel na výmenu údajov medzi dvoma fragmentmi počas navigácie, ak je ViewModel viazaná na spoločného vlastníka životného cyklu, napríklad na Activity. V takom prípade majú oba fragmenty prístup k rovnakej ViewModel, čo im umožňuje vymieňať si údaje bez priameho prepojenia.
Príklad:
// Získanie ViewModel viazanej na Activity
val sharedViewModel = ViewModelProvider(requireActivity()).get(SharedViewModel::class.java)
// Fragment A nastaví údaje
sharedViewModel.someData.value = "Ahoj z Fragmentu A"
// Fragment B sleduje zmeny
sharedViewModel.someData.observe(viewLifecycleOwner) { data ->
// Použitie prijatých údajov
}
Týmto spôsobom ViewModel slúži ako spoločný zdroj údajov medzi fragmentmi, zjednodušuje komunikáciu a zachováva údaje pri zmene konfigurácie.