Middle
Comment organiser l'interaction entre une Activity et un fragment?
sobes.tech IA
Réponse de l'IA
L'interaction entre une Activity et un fragment en Android peut être organisée de plusieurs manières :
- Via des interfaces. Le fragment déclare une interface avec des méthodes de rappel, que l'Activity implémente. Le fragment appelle ces méthodes pour transmettre des données ou des événements à l'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) {
// Traitement des données du fragment
}
}
- Utilisation de ViewModel avec le cycle de vie de l'Activity. Un ViewModel partagé permet à l'Activity et au fragment d'échanger des données via LiveData.
class SharedViewModel : ViewModel() {
val data = MutableLiveData<String>()
}
// Dans l'Activity et le fragment
val model = ViewModelProvider(requireActivity()).get(SharedViewModel::class.java)
// Le fragment met à jour les données
model.data.value = "Nouvelle valeur"
// L'Activity observe les changements
model.data.observe(this) { value ->
// Traitement de la valeur
}
-
Utilisation d'EventBus (par exemple, Otto, EventBus) — pattern de publication-abonnement pour échanger des événements.
-
Transmission d'arguments via Bundle lors de la création du fragment — pour transmettre des données de l'Activity au fragment.
Le choix de la méthode dépend de la tâche et de l'architecture de l'application.