Aké dôvody robia nesprávnym vytváranie Fragmentu prostredníctvom volania jeho konštruktora?
sobes.tech AI
Odpoveď od AI
Priame vytváranie Fragmentu cez konštruktor je nesprávne z niekoľkých dôvodov:
-
Chýba odovzdanie argumentov cez Bundle. Pri vytváraní fragmentu sa odporúča použiť statickú metódu
newInstance(), ktorá umiestni parametre doBundlea nastaví ich pomocousetArguments(). To zabezpečí, že pri opätovnom vytvorení systémom (napríklad pri otočení obrazovky) zostanú parametre zachované. -
Problémy s obnovením stavu. Fragmenty môžu byť systémom Android znovu vytvorené pomocou konštruktora bez parametrov. Ak používate nestandardný konštruktor s parametrami, systém nebude môcť správne obnoviť fragment.
-
Porušenie životného cyklu. Android očakáva, že fragmenty budú mať verejný konštruktor bez parametrov. Použitie iných konštruktorov môže viesť k chybám pri obnove stavu.
Príklad správneho vytvorenia fragmentu:
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")
// Použitie parametra
}
}
Týmto spôsobom porušuje vytváranie fragmentu cez konštruktor odporúčania a môže viesť k chybám pri behu aplikácie.