Sobes.tech
Middle

Como organizar a interação entre uma Activity e um fragmento?

sobes.tech IA

Resposta da IA

A interação entre uma Activity e um fragment em Android pode ser organizada de várias maneiras:

  1. Através de interfaces. O fragmento declara uma interface com métodos de callback, que a Activity implementa. O fragmento chama esses métodos para transmitir dados ou eventos para a Activity.
class MyFragment : Fragment() {
    interface OnDataPass {
        fun onDataPass(data: String)
    }

    private lateinit var dataPasser: OnDataPass

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

    fun passData(data: String) {
        dataPasser.onDataPass(data)
    }
}

class MyActivity : AppCompatActivity(), MyFragment.OnDataPass {
    override fun onDataPass(data: String) {
        // Processar dados do fragmento
    }
}
  1. Uso de ViewModel com o ciclo de vida da Activity. Um ViewModel compartilhado permite que a Activity e o fragmento troquem dados através de LiveData.
class SharedViewModel : ViewModel() {
    val data = MutableLiveData<String>()
}

// Na Activity e no fragmento
val model = ViewModelProvider(requireActivity()).get(SharedViewModel::class.java)

// O fragmento atualiza os dados
model.data.value = "Novo valor"

// A Activity observa as mudanças
model.data.observe(this) { value ->
    // Processar o valor
}
  1. Uso de EventBus (por exemplo, Otto, EventBus) — padrão de publicação-inscrição para troca de eventos.

  2. Passagem de argumentos via Bundle ao criar o fragmento — para transmitir dados da Activity para o fragmento.

A escolha do método depende da tarefa e da arquitetura da aplicação.