Junior — Middle
Lze použít stejný ViewModel pro výměnu dat mezi dvěma fragmenty při navigaci?
sobes.tech AI
Odpověď od AI
Ano, je možné použít stejnou ViewModel pro výměnu dat mezi dvěma fragmenty během navigace, pokud je ViewModel vázána na společného vlastníka životního cyklu, například na Activity. V takovém případě mají oba fragmenty přístup ke stejné ViewModel, což jim umožňuje vyměňovat si data bez nutnosti je přímo propojit.
Příklad:
// Získání ViewModel vázané na Activity
val sharedViewModel = ViewModelProvider(requireActivity()).get(SharedViewModel::class.java)
// Fragment A nastaví data
sharedViewModel.someData.value = "Ahoj z Fragmentu A"
// Fragment B sleduje změny
sharedViewModel.someData.observe(viewLifecycleOwner) { data ->
// Použití přijatých dat
}
Tímto způsobem ViewModel slouží jako společný zdroj dat mezi fragmenty, zjednodušuje komunikaci a uchovává data při změně konfigurace.