Middle
Kā organizēt sadarbību starp Activity un fragmentu?
sobes.tech AI
Atbilde no AI
Android aktivitātes un fragmenta savstarpējā sadarbība var tikt organizēta vairākos veidos:
- Caur saskarnēm. Fragments deklarē saskarni ar atgriezeniskās saites metodēm, kuras realizē aktivitāte. Fragments izsauc saskarnes metodes, lai nodotu datus vai notikumus aktivitātei.
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) {
// Datu apstrāde no fragmenta
}
}
- Izmantojot ViewModel ar aktivitātes dzīves ciklu. Kopīgs ViewModel ļauj aktivitātei un fragmentam apmainīties ar datiem caur LiveData.
class SharedViewModel : ViewModel() {
val data = MutableLiveData<String>()
}
// Aktivitātē un fragmentā
val model = ViewModelProvider(requireActivity()).get(SharedViewModel::class.java)
// Fragments atjaunina datus
model.data.value = "Jauna vērtība"
// Aktivitāte novēro izmaiņas
model.data.observe(this) { value ->
// Datu apstrāde
}
-
EventBus izmantošana (piemēram, Otto, EventBus) — publicēšanas un abonēšanas modelis notikumu apmaiņai.
-
Argumentu nodošana caur Bundle, izveidojot fragmentu — datu nodošanai no aktivitātes uz fragmentu.
Izvēle ir atkarīga no uzdevuma un lietojumprogrammas arhitektūras.