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
Bundlepomocou metódysetArguments(). - Extrahovať parametre v metóde
onCreate()aleboonCreateView()zgetArguments().
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
}
}