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