Sobes.tech
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.