Junior — Middle
Milyen módszerekkel történik az interakció a Fragmentek között, amelyek ugyanabban az Activity-ben vannak?
sobes.tech MI
Válasz az MI-től
Egy Activity-n belüli fragmentek közötti kölcsönhatás általában egy közvetítőként működő Activity-n keresztül valósul meg. A fő módszerek:
-
Visszahívási interfész (Callback Interface) használata
- A fragment deklarál egy interfészt adatok átadására.
- Az Activity megvalósítja ezt az interfészt, és adatokat kap egy fragmenttől.
- Az Activity adatokat továbbít egy másik fragmentnek.
-
ViewModel használata az Activity életciklusával (Shared ViewModel)
- Egy ViewModel jön létre, amely az Activity-hez kapcsolódik.
- Mindkét fragment hozzáfér ugyanahhoz a ViewModel-hez.
- LiveData vagy más megfigyelhető objektumokon keresztül a fragmentek adatokat cserélnek.
-
FragmentManager használata a fragmentek keresésére és közvetlen metódushívásra
- Kevésbé preferált módszer, mivel növeli a kötődést.
Példa interfésszel:
// Fragment A-ban
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("Szia a FragmentA-tól")
}
}
// Az Activity-ben
class MainActivity : AppCompatActivity(), FragmentA.OnDataPass {
override fun onDataPass(data: String) {
val fragmentB = supportFragmentManager.findFragmentById(R.id.fragmentB) as FragmentB
fragmentB.updateData(data)
}
}