Sobes.tech
Middle

Bir Activity ile fragment arasında etkileşim nasıl organize edilir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Android'de Activity ile fragment arasındaki etkileşim birkaç şekilde organize edilebilir:

  1. Arayüzler aracılığıyla. Fragment, geri çağırma yöntemleri içeren bir arayüz bildirir ve Activity bunu uygular. Fragment, Activity'ye veri veya olay iletmek için bu yöntemleri çağırır.
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) {
        // Fragment'ten gelen veriyi işle
    }
}
  1. ViewModel kullanımıyla Activity yaşam döngüsü. Paylaşılan ViewModel, Activity ve fragment'in LiveData aracılığıyla veri alışverişi yapmasını sağlar.
class SharedViewModel : ViewModel() {
    val data = MutableLiveData<String>()
}

// Activity ve fragment'te
val model = ViewModelProvider(requireActivity()).get(SharedViewModel::class.java)

// Fragment veriyi günceller
model.data.value = "Yeni değer"

// Activity değişiklikleri izler
model.data.observe(this) { value ->
    // İşleme
}
  1. EventBus kullanımı (örneğin, Otto, EventBus) — olaylar için yayınla-abone ol deseni.

  2. Fragment oluşturulurken Bundle aracılığıyla argümanlar gönderme — Activity'den fragment'e veri iletmek için.

Yöntem seçimi, göreve ve uygulamanın mimarisine bağlıdır.