Sobes.tech
Middle

Waarom kunnen er geen parameters worden doorgegeven aan de constructor van het fragment?

sobes.tech AI

Antwoord van AI

Parameters kunnen niet rechtstreeks aan de constructor van het fragment worden doorgegeven vanwege de levenscyclus van Android en het proces van herstel van de staat. Fragmenten kunnen door het systeem worden opnieuw gemaakt (bijvoorbeeld bij een configuratiewijziging of geheugen tekort), en in dat geval wordt hun standaardconstructor zonder argumenten aangeroepen. Als je parameters aan de constructor doorgeeft, gaan deze verloren bij het opnieuw maken, wat kan leiden tot een crash van de app of onjuist gedrag.

De juiste manier om gegevens aan een fragment door te geven, is door gebruik te maken van een Bundle object en de methode setArguments(). Deze bundle wordt door het systeem opgeslagen en hersteld bij het opnieuw maken van het fragment.

Voorbeeld:

Gegevens doorgeven:

// Een fragment maken met argumenten
val fragment = MyFragment()
val bundle = Bundle()
bundle.putString("sleutel", "waarde")
fragment.arguments = bundle

// Fragment vervangen
supportFragmentManager.beginTransaction()
    .replace(R.id.fragment_container, fragment)
    .commit()

Gegevens ophalen in het fragment:

// Binnen het fragment, bijvoorbeeld in onCreate() of onViewCreated()
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    arguments?.let {
        val waarde = it.getString("sleutel")
        // Gebruik "waarde"
    }
}

Dit zorgt voor het automatisch opslaan en herstellen van de doorgegeven gegevens bij het opnieuw maken van het fragment door het systeem.