Sobes.tech
Junior — Middle

Welke redenen maken het onjuist om een Fragment te maken door het aanroepen van de constructor?

sobes.tech AI

Antwoord van AI

Het rechtstreeks maken van een Fragment via de constructor is om verschillende redenen verkeerd:

  • Ontbreken van het doorgeven van argumenten via Bundle. Bij het maken van een fragment wordt aanbevolen om de statische methode newInstance() te gebruiken, die de parameters in een Bundle plaatst en deze via setArguments() instelt. Dit zorgt ervoor dat bij het opnieuw maken door het systeem (bijvoorbeeld bij schermrotatie) de parameters behouden blijven.

  • Problemen met het herstellen van de staat. Fragments kunnen door het Android-systeem worden hermaakt via een parameterloze constructor. Als je een niet-standaard constructor met parameters gebruikt, kan het systeem het fragment niet correct herstellen.

  • Overtreding van de levenscyclus. Android verwacht dat fragments een openbare, parameterloze constructor hebben. Het gebruik van andere constructors kan fouten veroorzaken bij het herstellen van de staat.

Voorbeeld van correct fragment maken:

class MyFragment : Fragment() {
    companion object {
        fun newInstance(param: String): MyFragment {
            val fragment = MyFragment()
            val args = Bundle()
            args.putString("param_key", param)
            fragment.arguments = args
            return fragment
        }
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        val param = arguments?.getString("param_key")
        // Gebruik param
    }
}

Het maken van een fragment via de constructor schendt de aanbevelingen en kan leiden tot fouten tijdens het gebruik van de app.