Sobes.tech
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 :

  1. 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
    }
}
  1. 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
}
  1. Utilisation d'EventBus (par exemple, Otto, EventBus) — pattern de publication-abonnement pour échanger des événements.

  2. 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.