Sobes.tech
Middle

Ako zorganizovať interakciu medzi Activity a fragmentom?

sobes.tech AI

Odpoveď od AI

Interakcia medzi aktivitou a fragmentom v Androidu môže byť organizovaná niekoľkými spôsobmi:

  1. Pomocou rozhraní. Fragment deklaruje rozhranie s metódami spätného volania, ktoré implementuje aktivita. Fragment volá tieto metódy na odovzdanie údajov alebo udalostí do aktivity.
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) {
        // Spracovanie údajov z fragmentu
    }
}
  1. Použitie ViewModel s životným cyklom aktivity. Zdieľaný ViewModel umožňuje aktivite a fragmentu vymieňať si údaje cez LiveData.
class SharedViewModel : ViewModel() {
    val data = MutableLiveData<String>()
}

// V aktivite a fragmente
val model = ViewModelProvider(requireActivity()).get(SharedViewModel::class.java)

// Fragment aktualizuje údaje
model.data.value = "Nová hodnota"

// Aktivita sleduje zmeny
model.data.observe(this) { value ->
    // Spracovanie hodnoty
}
  1. Použitie EventBus (napríklad, Otto, EventBus). — vzor publikácie-odberu na výmenu udalostí.

  2. Prenos argumentov cez Bundle pri vytváraní fragmentu. — na odovzdanie údajov z aktivity do fragmentu.

Výber metódy závisí od úlohy a architektúry aplikácie.