Junior — Middle
Czy można użyć tego samego ViewModel do wymiany danych między dwoma fragmentami podczas nawigacji?
sobes.tech AI
Odpowiedź od AI
Tak, można użyć tej samej ViewModel do wymiany danych między dwoma fragmentami podczas nawigacji, jeśli ViewModel jest powiązana z wspólnym właścicielem cyklu życia, na przykład z Activity. W takim przypadku oba fragmenty mają dostęp do tej samej ViewModel, co umożliwia wymianę danych bez konieczności bezpośredniego łączenia fragmentów.
Przykład:
// Uzyskanie ViewModel powiązanej z Activity
val sharedViewModel = ViewModelProvider(requireActivity()).get(SharedViewModel::class.java)
// Fragment A ustawia dane
sharedViewModel.someData.value = "Cześć z Fragmentu A"
// Fragment B obserwuje zmiany
sharedViewModel.someData.observe(viewLifecycleOwner) { data ->
// Używamy otrzymanych danych
}
W ten sposób ViewModel działa jako wspólne źródło danych między fragmentami, upraszczając komunikację i zachowując dane podczas zmiany konfiguracji.