Junior — Middle
Kann man dasselbe ViewModel verwenden, um Daten zwischen zwei Fragmenten bei der Navigation auszutauschen?
sobes.tech KI
Antwort von AI
Ja, es ist möglich, eine und dieselbe ViewModel zum Datenaustausch zwischen zwei Fragmenten während der Navigation zu verwenden, wenn die ViewModel an einen gemeinsamen Lebenszyklusbesitzer gebunden ist, z.B. an eine Activity. In diesem Fall greifen beide Fragmente auf dieselbe ViewModel zu, was den Datenaustausch ermöglicht, ohne die Fragmente direkt zu verbinden.
Beispiel:
// Zugriff auf die mit der Activity verbundene ViewModel
val sharedViewModel = ViewModelProvider(requireActivity()).get(SharedViewModel::class.java)
// Fragment A setzt Daten
sharedViewModel.someData.value = "Hallo vom Fragment A"
// Fragment B beobachtet Änderungen
sharedViewModel.someData.observe(viewLifecycleOwner) { data ->
// Verwendet die empfangenen Daten
}
Auf diese Weise fungiert die ViewModel als gemeinsame Datenquelle zwischen den Fragmenten, vereinfacht die Kommunikation und bewahrt die Daten bei Konfigurationsänderungen.