Sobes.tech
Junior — Middle

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 do Bundle a nastaví ich pomocou setArguments(). 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.