Sobes.tech
Junior — Middle

Peut-on utiliser la même ViewModel pour échanger des données entre deux fragments lors de la navigation?

sobes.tech IA

Réponse de l'IA

Oui, il est possible d'utiliser une même ViewModel pour échanger des données entre deux fragments lors de la navigation, si la ViewModel est liée à un propriétaire de cycle de vie commun, par exemple, une Activity. Dans ce cas, les deux fragments accèdent à la même ViewModel, ce qui leur permet d'échanger des données sans avoir besoin de les lier directement.

Exemple :

// Obtenir la ViewModel liée à l'Activity
val sharedViewModel = ViewModelProvider(requireActivity()).get(SharedViewModel::class.java)

// Le Fragment A définit des données
sharedViewModel.someData.value = "Bonjour du Fragment A"

// Le Fragment B observe les changements
sharedViewModel.someData.observe(viewLifecycleOwner) { data ->
    // Utiliser les données reçues
}

Ainsi, la ViewModel sert de source de données commune entre les fragments, simplifiant la communication et conservant les données lors du changement de configuration.