Sobes.tech
Middle

Kako organizovati interakciju između Activity i fragmenta?

sobes.tech АИ

Одговор од АИ

Interakcija između aktivnosti i fragmenta u Androidu može biti organizovana na nekoliko načina:

  1. Kroz interfejse. Fragment deklarise interfejs sa metodama za povratni poziv, koje implementira aktivnost. Fragment poziva te metode za prenos podataka ili događaja u aktivnost.
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) {
        // Obrada podataka iz fragmenta
    }
}
  1. Korišćenje ViewModel-a sa životnim ciklusom aktivnosti. Deljeni ViewModel omogućava aktivnosti i fragmentu da razmenjuju podatke putem LiveData.
class SharedViewModel : ViewModel() {
    val data = MutableLiveData<String>()
}

// U aktivnosti i fragmentu
val model = ViewModelProvider(requireActivity()).get(SharedViewModel::class.java)

// Fragment ažurira podatke
model.data.value = "NOVA VREDNOST"

// Aktivnost prati promene
model.data.observe(this) { value ->
    // Obrada vrednosti
}
  1. Korišćenje EventBus (npr., Otto, EventBus) — obrazac objavljivanja-prijavljivanja za razmenu događaja.

  2. Prenos argumenata putem Bundle-a pri kreiranju fragmenta — za prenos podataka iz aktivnosti u fragment.

Izbor metode zavisi od zadatka i arhitekture aplikacije.