Milyen biztonságos módszerekkel lehet adatokat átadni Fragmentek között a konstruktoron keresztül?
sobes.tech MI
Válasz az MI-től
Androidben nem ajánlott közvetlenül a konstruktoron keresztül adatokat átadni Fragmentek között, mivel a rendszer bármikor újra létrehozhatja a fragmentet paraméter nélküli konstruktor hívásával. Ehelyett biztonságos és szabványos módszer az argumentumok használata Bundle-en keresztül, és a setArguments()/getArguments() metódusok alkalmazása.
Biztonságos adatátvitel példája:
class MyFragment : Fragment() {
companion object {
private const val ARG_PARAM = "param"
fun newInstance(param: String): MyFragment {
val fragment = MyFragment()
val args = Bundle()
args.putString(ARG_PARAM, param)
fragment.arguments = args
return fragment
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val param = arguments?.getString(ARG_PARAM)
// param használata
}
}
Így az adatok a Bundle-ben tárolódnak, amit a rendszer automatikusan ment és visszaállít a fragment újraalkotásakor. Paraméteres konstruktor használata nem biztonságos, és hibákhoz vezethet.
Ha feltétlenül konstruktorral szeretné használni, hagyja üresen, és adja át az adatokat Bundle segítségével, vagy használjon ViewModelt az adatok cseréjéhez a fragmentek között.