Sobes.tech
Junior — Middle

Kann man sicher sein, dass beim Ändern der Einstellungen genau der Benutzer-Fragment-Konstruktor aufgerufen wird?

sobes.tech KI

Antwort von AI

Nein, man kann sich nicht sicher sein, dass beim Ändern der Einstellungen genau der benutzerdefinierte Konstruktor des Fragments aufgerufen wird.

In Android kann das System Fragmente neu erstellen, indem es den parameterlosen (Standard-)Konstruktor verwendet, insbesondere beim Wiederherstellen des Zustands nach einer Konfigurationsänderung (z.B. Bildschirmrotation).

Daher wird empfohlen:

  • Den Standardkonstruktor ohne Parameter zu verwenden.
  • Parameter über ein Bundle mit der Methode setArguments() zu übergeben.
  • Die Parameter in onCreate() oder onCreateView() aus getArguments() zu extrahieren.

Dies gewährleistet eine korrekte Wiederherstellung des Fragment-Zustands durch das System.

Beispiel:

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")
        // Verwendung von param
    }
}