Sobes.tech
Junior — Middle

Biztos lehet-e benne, hogy a beállítások módosításakor pontosan a felhasználói konstruktor hívódik meg?

sobes.tech MI

Válasz az MI-től

Nem, nem lehet biztos benne, hogy a beállítások módosításakor pontosan a felhasználói fragment konstruktorát hívják meg.

Android rendszerben a rendszer újra létrehozhatja a fragmenteket a paraméter nélküli (alapértelmezett) konstruktor használatával, különösen a konfigurációs változás utáni állapot helyreállításakor (például képernyőforgatáskor).

Ezért javasolt:

  • Az alapértelmezett paraméter nélküli konstruktor használata.
  • Paraméterek átadása Bundle-en keresztül a setArguments() módszerrel.
  • A paraméterek kinyerése az onCreate() vagy az onCreateView() metódusban a getArguments()-ből.

Ez biztosítja a rendszer által a fragment állapotának helyes helyreállítását.

Példa:

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")
        // Paraméter használata
    }
}