Junior
Bir fraqmentdən digərinə məlumatların necə ötürülməsi?
sobes.tech Süni İntellekt
AI-dan cavab
-
Bundle arqumentləri: Yeni fragment nümunəsi yaradılarkən primitiv məlumat tiplərini və
Parcelablevə yaSerializabletətbiq edən obyektləri ötürmək üçün istifadə olunur.// Göndərən fragmentdə val bundle = Bundle().apply { putString("key", "value") } val fragment = TargetFragment().apply { arguments = bundle } // Qəbul edən fragmentdə override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) val value = arguments?.getString("key") // ... value istifadə } -
Paylaşılan ViewModel: Eyni Activity-ə aid fragmentlər məlumat mübadiləsi üçün ümumi
ViewModelistifadə edə bilər.// SharedViewModel class SharedViewModel : ViewModel() { val data = MutableLiveData<String>() } // Göndərən fragmentdə private val sharedViewModel: SharedViewModel by activityViewModels() sharedViewModel.data.value = "value" // Qəbul edən fragmentdə private val sharedViewModel: SharedViewModel by activityViewModels() sharedViewModel.data.observe(viewLifecycleOwner) { value -> // ... value istifadə } -
İnterfeys callback istifadə edərək: Bir fragment Activity-də bir metodu çağırır və Activity daha sonra başqa bir fragmentdəki metodu çağırır.
// Activity-də və ya ayrıca faylda interfeys interface DataTransferListener { fun onDataReceived(data: String) } // Göndərən fragmentdə (activity as? DataTransferListener)?.onDataReceived("value") // İnterfeysi həyata keçirən Activity-də override fun onDataReceived(data: String) { val targetFragment = supportFragmentManager.findFragmentById(R.id.target_fragment_container) as? TargetFragment targetFragment?.updateUI(data) } // Qəbul edən fragmentdə fun updateUI(data: String) { // ... UI-ni yeniləyin } -
Fragment Result API: Fragmentlər arasında məlumat mübadiləsi üçün müasir və tövsiyə olunan üsul.
// Göndərən fragmentdə (nəticəni qurmaq) setFragmentResult("requestKey", bundleOf("bundleKey" to "value")) // Qəbul edən fragmentdə (nəticəni dinləmək) setFragmentResultListener("requestKey") { requestKey, bundle -> val result = bundle.getString("bundleKey") // ... nəticədən istifadə }