Sobes.tech
Middle

Cum să organizezi interacțiunea dintre o Activity și un fragment?

sobes.tech AI

Răspuns de la AI

Interacțiunea dintre o Activity și un fragment în Android poate fi organizată în mai multe moduri:

  1. Prin interfețe. Fragmentul declară o interfață cu metode de callback, pe care o implementează Activity. Fragmentul apelează aceste metode pentru a transmite date sau evenimente către Activity.
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) {
        // Procesarea datelor din fragment
    }
}
  1. Utilizarea ViewModel-ului cu ciclul de viață al Activity. Un ViewModel comun permite schimbul de date între Activity și fragment prin LiveData.
class SharedViewModel : ViewModel() {
    val data = MutableLiveData<String>()
}

// În Activity și fragment
val model = ViewModelProvider(requireActivity()).get(SharedViewModel::class.java)

// Fragmentul actualizează datele
model.data.value = "Valoare nouă"

// Activity observă modificările
model.data.observe(this) { value ->
    // Procesarea valorii
}
  1. Utilizarea EventBus (de exemplu, Otto, EventBus) — model de publicare-abonare pentru schimbul de evenimente.

  2. Transmiterea argumentelor prin Bundle la crearea fragmentului — pentru a transmite date de la Activity la fragment.

Alegerea metodei depinde de sarcină și de arhitectura aplicației.