Sobes.tech
Junior — Middle

Je možné si byť istý, že pri zmene nastavení bude volaný presne používateľský konštruktor fragmentu?

sobes.tech AI

Odpoveď od AI

Nie je možné si byť istý, že pri zmene nastavení bude zavolaný presne používateľský konštruktor fragmentu.

V systéme Android môže systém znovu vytvoriť fragmenty pomocou konštruktora bez parametrov (štandardného), najmä pri obnove stavu po zmene konfigurácie (napríklad otočení obrazovky).

Preto sa odporúča:

  • Používať štandardný konštruktor bez parametrov.
  • Prenášať parametre cez Bundle pomocou metódy setArguments().
  • Extrahovať parametre v metóde onCreate() alebo onCreateView() z getArguments().

Toto zabezpečuje správne obnovenie stavu fragmentu systémom.

Príklad:

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žiť param
    }
}