Sobes.tech
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:

  1. 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.
  2. 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.
  3. 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)
    }
}