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:
- 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
}
}
- 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
}
-
Uso de EventBus (por exemplo, Otto, EventBus) — padrão de publicação-inscrição para troca de eventos.
-
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.