Sobes.tech
Middle

Hogyan szervezzük az aktivitás és a fragment közötti kölcsönhatást?

sobes.tech MI

Válasz az MI-től

Az Androidban az Activity és a fragment közötti interakció többféleképpen szervezhető:

  1. Interfészeken keresztül. A fragment egy callback metódusokat tartalmazó interfészt deklarál, amit az Activity valósít meg. A fragment ezeket a metódusokat hívja meg az adatok vagy események átadására az Activity-nek.
class MyFragment : Fragment() {
    interface OnDataPass {
        fun onDataPass(data: String)
    }

    private lateinit var dataPasser: OnDataPass

    override fun onAttach(context: Context) {
        super.onAttach(context)
        dataPasser = context as OnDataPass
    }

    fun passData(data: String) {
        dataPasser.onDataPass(data)
    }
}

class MyActivity : AppCompatActivity(), MyFragment.OnDataPass {
    override fun onDataPass(data: String) {
        // Adatok feldolgozása a fragmentből
    }
}
  1. ViewModel használata az Activity életciklusával. Egy megosztott ViewModel lehetővé teszi az Activity és a fragment közötti adatok cseréjét LiveData segítségével.
class SharedViewModel : ViewModel() {
    val data = MutableLiveData<String>()
}

// Az Activity-ben és a fragmentben
val model = ViewModelProvider(requireActivity()).get(SharedViewModel::class.java)

// A fragment frissíti az adatokat
model.data.value = "Új érték"

// Az Activity figyeli a változásokat
model.data.observe(this) { value ->
    // Az érték feldolgozása
}
  1. EventBus használata (pl. Otto, EventBus) — publikálás-előfizetés mintázat az események cseréjéhez.

  2. Argumentumok átadása Bundle segítségével a fragment létrehozásakor — az adatok átadása az Activity-ből a fragmentbe.

A módszer kiválasztása a feladattól és az alkalmazás architektúrájától függ.