Junior — Middle
Akými metódami sa zabezpečuje interakcia medzi Fragmentmi nachádzajúcimi sa v jednej Activity?
sobes.tech AI
Odpoveď od AI
Interakcia medzi fragmentami v tej istej aktivite sa zvyčajne realizuje prostredníctvom aktivity, ktorá slúži ako sprostredkovateľ. Hlavné metódy:
-
Pomocou callback rozhrania (Callback Interface)
- Fragment deklaruje rozhranie s metódami na prenos dát.
- Aktivita implementuje toto rozhranie a prijíma dáta od jedného fragmentu.
- Aktivita prenáša dáta inému fragmentu.
-
Použitie ViewModel s životným cyklom aktivity (Shared ViewModel)
- Vytvorí sa ViewModel spojený s aktivitou.
- Oba fragmenty majú prístup k rovnakému ViewModelu.
- Prostredníctvom LiveData alebo iných pozorovateľných objektov si fragmenty vymieňajú dáta.
-
Použitie FragmentManager na vyhľadanie fragmentov a priame volanie ich metód
- Menej preferovaný spôsob, pretože zvyšuje prepojenie.
Príklad s rozhraním:
// V Fragment A
interface OnDataPass {
fun onDataPass(data: String)
}
class FragmentA : Fragment() {
lateinit var dataPasser: OnDataPass
override fun onAttach(context: Context) {
super.onAttach(context)
dataPasser = context as OnDataPass
}
fun passData() {
dataPasser.onDataPass("Ahoj od FragmentA")
}
}
// V Activity
class MainActivity : AppCompatActivity(), FragmentA.OnDataPass {
override fun onDataPass(data: String) {
val fragmentB = supportFragmentManager.findFragmentById(R.id.fragmentB) as FragmentB
fragmentB.updateData(data)
}
}