Sobes.tech
Junior — Middle

Ar galima būti tikriems, kad nustatymų keitimo metu bus iškviestas būtent naudotojo konstruktorius?

sobes.tech AI

Atsakymas iš AI

Ne, nėra garantijos, kad keičiant nustatymus bus iškviečiamas būtent naudotojo fragmento konstruktorius.

Android sistemoje sistema gali iš naujo sukurti fragmentus naudodama be parametrų (numatytąjį) konstruktorių, ypač atkuriant būseną po konfigūracijos keitimo (pvz., ekrano pasukimo).

Todėl rekomenduojama:

  • Naudoti numatytąjį be parametrų konstruktorių.
  • Perduoti parametrus per Bundle naudodami setArguments() metodą.
  • Išgauti parametrus onCreate() arba onCreateView() metoduose iš getArguments().

Tai užtikrina teisingą fragmento būsenos atkūrimą sistemos.

Pavyzdys:

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