Sobes.tech
Junior — Middle

Je možné si být jistý, že při změně nastavení bude volán právě uživatelský konstruktor fragmentu?

sobes.tech AI

Odpověď od AI

Ne, není možné si být jistý, že při změně nastavení bude zavolán právě uživatelský konstruktor fragmentu.

V systému Android může systém znovu vytvořit fragmenty pomocí konstruktoru bez parametrů (výchozího), zejména při obnově stavu po změně konfigurace (například otočení obrazovky).

Proto se doporučuje:

  • Používat výchozí konstruktor bez parametrů.
  • Přenášet parametry přes Bundle pomocí metody setArguments().
  • Extrahovat parametry v metodě onCreate() nebo onCreateView() z getArguments().

Toto zajišťuje správné obnovení stavu fragmentu systémem.

Pří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žití parametru
    }
}