Sobes.tech
Junior — Middle

É possível usar a mesma ViewModel para trocar dados entre dois fragmentos durante a navegação?

sobes.tech IA

Resposta da IA

Sim, é possível usar a mesma ViewModel para trocar dados entre dois fragmentos durante a navegação, se a ViewModel estiver vinculada a um proprietário de ciclo de vida comum, por exemplo, a uma Activity. Nesse caso, ambos os fragmentos acessam a mesma ViewModel, permitindo a troca de dados sem precisar vinculá-los diretamente.

Exemplo:

// Obter a ViewModel vinculada à Activity
val sharedViewModel = ViewModelProvider(requireActivity()).get(SharedViewModel::class.java)

// Fragmento A define os dados
sharedViewModel.someData.value = "Olá do Fragmento A"

// Fragmento B observa as mudanças
sharedViewModel.someData.observe(viewLifecycleOwner) { data ->
    // Usar os dados recebidos
}

Assim, a ViewModel atua como uma fonte comum de dados entre os fragmentos, simplificando a comunicação e mantendo os dados ao alterar a configuração.