Sobes.tech
Junior — Middle

Quais os métodos utilizados para a interação entre Fragmentos que estão na mesma Activity?

sobes.tech IA

Resposta da IA

A interação entre fragmentos numa mesma Activity geralmente é realizada através de uma Activity que atua como intermediária. Os métodos principais:

  1. Através de uma interface de callback (Callback Interface)

    • O fragmento declara uma interface com métodos para transmitir dados.
    • A Activity implementa essa interface e recebe dados de um fragmento.
    • A Activity transmite dados para outro fragmento.
  2. Uso de ViewModel com o ciclo de vida da Activity (Shared ViewModel)

    • Um ViewModel é criado, ligado à Activity.
    • Ambos os fragmentos acessam o mesmo ViewModel.
    • Através de LiveData ou outros objetos observáveis, os fragmentos trocam dados.
  3. Uso de FragmentManager para procurar fragmentos e chamar diretamente seus métodos

    • Método menos preferido, pois aumenta o acoplamento.

Exemplo com interface:

// No Fragment A
interface OnDataPass {
    fun onDataPass(data: String)
}

class FragmentA : Fragment() {
    lateinit var dataPasser: OnDataPass

    override fun onAttach(context: Context) {
        super.onAttach(context)
        dataPasser = context as OnDataPass
    }

    fun passData() {
        dataPasser.onDataPass("Olá do FragmentA")
    }
}

// Na Activity
class MainActivity : AppCompatActivity(), FragmentA.OnDataPass {
    override fun onDataPass(data: String) {
        val fragmentB = supportFragmentManager.findFragmentById(R.id.fragmentB) as FragmentB
        fragmentB.updateData(data)
    }
}