Junior — Middle
Como é efetuada a troca de dados entre fragmentos ao usar o FragmentManager?
sobes.tech IA
Resposta da IA
A troca de dados entre fragmentos ao usar FragmentManager geralmente é feita através da atividade, que atua como intermediária. Os fragmentos não devem interagir diretamente entre si para manter uma baixa ligação.
Principais formas de troca de dados:
-
Através de métodos da atividade:
- O fragmento envia dados para a atividade (por exemplo, através de uma interface ou chamada direta de método).
- A atividade passa dados para outro fragmento chamando seus métodos públicos.
-
Uso de ViewModel com o ciclo de vida da atividade:
- Um ViewModel compartilhado permite que os fragmentos observem os mesmos dados.
- As alterações no ViewModel são refletidas automaticamente em todos os fragmentos inscritos.
-
Uso de setFragmentResultListener e setFragmentResult (a partir do Fragment 1.3.0):
- O fragmento envia resultado através do FragmentManager.
- Outro fragmento escuta esses resultados e reage a eles.
Exemplo usando setFragmentResult:
// Enviando resultado do primeiro fragmento
setFragmentResult("requestKey", bundleOf("dataKey" to "value"))
// Em outro fragmento, ouvindo o resultado
setFragmentResultListener("requestKey") { key, bundle ->
val result = bundle.getString("dataKey")
// processamento do resultado
}