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:
-
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.
-
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.
-
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)
}
}