Sobes.tech
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:

  1. 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
    }
}
  1. 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
}
  1. EventBus izmantošana (piemēram, Otto, EventBus) — publicēšanas un abonēšanas modelis notikumu apmaiņai.

  2. 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.