Junior — Middle
Lehet-e ugyanazt a ViewModel-t használni két fragmentum közötti adatcseréhez navigáció közben?
sobes.tech MI
Válasz az MI-től
Igen, ugyanazt a ViewModel-t lehet használni az adatok cseréjére két fragment között navigáció közben, ha a ViewModel egy közös életciklus-tulajdonoshoz, például egy Activity-hez van kötve. Ebben az esetben mindkét fragment hozzáfér ugyanahhoz a ViewModel-hez, ami lehetővé teszi számukra az adatok cseréjét anélkül, hogy közvetlenül összekapcsolnák őket.
Példa:
// A ViewModel megszerzése, amely az Activity-hez van kötve
val sharedViewModel = ViewModelProvider(requireActivity()).get(SharedViewModel::class.java)
// Az A fragment adatokat állít be
sharedViewModel.someData.value = "Szia az A fragmentből"
// A B fragment figyeli a változásokat
sharedViewModel.someData.observe(viewLifecycleOwner) { data ->
// Használja a kapott adatokat
}
Így a ViewModel közös adatforrásként működik a fragmentek között, egyszerűsítve a kommunikációt és megőrizve az adatokat konfigurációváltáskor.