Middle
Kaip organizuoti sąveiką tarp Activity ir fragmento?
sobes.tech AI
Atsakymas iš AI
Veiksmų sąveika tarp Activity ir fragmento Android gali būti organizuota keliais būdais:
- Per sąsajas. Fragmentas deklaruoja sąsają su atgalinio skambučio metodais, kuriuos įgyvendina Activity. Fragmentas kviečia šiuos metodus perduoti duomenis ar įvykius į 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) {
// Apdoroti duomenis iš fragmento
}
}
- Naudojant ViewModel su Activity gyvavimo ciklu. Bendras ViewModel leidžia Activity ir fragmentui keistis duomenimis per LiveData.
class SharedViewModel : ViewModel() {
val data = MutableLiveData<String>()
}
// Activity ir fragmente
val model = ViewModelProvider(requireActivity()).get(SharedViewModel::class.java)
// Fragment atnaujina duomenis
model.data.value = "Nauja reikšmė"
// Activity stebi pokyčius
model.data.observe(this) { value ->
// Duomenų apdorojimas
}
-
Naudojant EventBus (pvz., Otto, EventBus) — publikavimo-prenumeravimo modelis įvykių keitimui.
-
Perduodant argumentus per Bundle, kuriant fragmentą — duomenų perdavimas iš Activity į fragmentą.
Pasirinktas metodas priklauso nuo užduoties ir programos architektūros.