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
Bundlepomocí metodysetArguments(). - Extrahovat parametry v metodě
onCreate()neboonCreateView()zgetArguments().
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
}
}