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:
- 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
}
}
- 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
}
-
Utilizarea EventBus (de exemplu, Otto, EventBus) — model de publicare-abonare pentru schimbul de evenimente.
-
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.