Kokios priežastys daro neteisingą Fragment kūrimą naudojant jo konstruktorių?
sobes.tech AI
Atsakymas iš AI
Kreipiantis į Fragment'ą tiesiogiai per konstruktorių, yra keletas priežasčių, kodėl tai yra neteisinga:
-
Trūksta argumentų perdavimo per Bundle. Kuriant fragmentą, rekomenduojama naudoti statinį metodą
newInstance(), kuris įdeda parametrus įBundleir nustato juos naudojantsetArguments(). Tai užtikrina, kad sistema (pavyzdžiui, ekrano pasukimo metu) iš naujo sukuriant fragmentą, parametrai išliks. -
Būsenos atkūrimo problemos. Fragmentai gali būti atkuriami Android sistemos naudojant konstruktorių be parametrų. Jei naudojate nestandartinį konstruktorių su parametrais, sistema negalės tinkamai atkurti fragmento.
-
Gyvenimo ciklo pažeidimas. Android tikisi, kad fragmentai turės viešą konstruktorių be parametrų. Kitų konstruktorių naudojimas gali sukelti klaidų būsenos atkūrimo metu.
Tinkamas fragmento kūrimo 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")
// Parametro naudojimas
}
}
Taip, fragmento kūrimas per konstruktorių pažeidžia rekomendacijas ir gali sukelti klaidų programos veikimo metu.