Sobes.tech
Middle

Hoe organiseer je de interactie tussen een Activity en een fragment?

sobes.tech AI

Antwoord van AI

De interactie tussen een Activity en een fragment in Android kan op verschillende manieren worden georganiseerd:

  1. Via interfaces. Het fragment declareert een interface met callback-methoden, die door de Activity worden geïmplementeerd. Het fragment roept deze methoden aan om gegevens of gebeurtenissen naar de Activity te sturen.
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) {
        // Verwerking van gegevens uit het fragment
    }
}
  1. Gebruik van ViewModel met de levenscyclus van de Activity. Een gedeelde ViewModel maakt het mogelijk voor de Activity en het fragment om gegevens uit te wisselen via LiveData.
class SharedViewModel : ViewModel() {
    val data = MutableLiveData<String>()
}

// In de Activity en het fragment
val model = ViewModelProvider(requireActivity()).get(SharedViewModel::class.java)

// Het fragment werkt de gegevens bij
model.data.value = "Nieuwe waarde"

// De Activity observeert de wijzigingen
model.data.observe(this) { value ->
    // Verwerking van de waarde
}
  1. Gebruik van EventBus (bijvoorbeeld Otto, EventBus) — pub/sub patroon voor het uitwisselen van gebeurtenissen.

  2. Doorgeven van argumenten via Bundle bij het maken van het fragment — om gegevens van de Activity naar het fragment te sturen.

De keuze van de methode hangt af van de taak en de architectuur van de applicatie.