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

  1. 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.
  2. 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.
  3. 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
}