Junior
Bir fragmandan diğerine nasıl veri aktarılır?
sobes.tech yapay zeka
AI'dan gelen yanıt
-
Bundle Argümanları: Yeni bir fragment örneği oluşturulurken temel veri tipleri ve
ParcelableveyaSerializableuygulayan nesnelerin aktarımı için kullanılır.// Gönderen fragmentte val bundle = Bundle().apply { putString("key", "value") } val fragment = TargetFragment().apply { arguments = bundle } // Alan fragmentte override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) val value = arguments?.getString("key") // ... value kullanımı } -
Paylaşılan ViewModel: Aynı Activity'ye ait fragmentler, veri alışverişi için ortak bir
ViewModelkullanabilir.// SharedViewModel class SharedViewModel : ViewModel() { val data = MutableLiveData<String>() } // Gönderen fragmentte private val sharedViewModel: SharedViewModel by activityViewModels() sharedViewModel.data.value = "value" // Alan fragmentte private val sharedViewModel: SharedViewModel by activityViewModels() sharedViewModel.data.observe(viewLifecycleOwner) { value -> // ... value kullanımı } -
Arayüz geri çağırma kullanımı: Bir fragment, Activity'deki bir yöntemi çağırır ve Activity daha sonra başka bir fragmentteki yöntemi çağırır.
// Activity veya ayrı bir dosyada arayüz interface DataTransferListener { fun onDataReceived(data: String) } // Gönderen fragmentte (activity as? DataTransferListener)?.onDataReceived("value") // Arayüzü uygulayan Activity'de override fun onDataReceived(data: String) { val targetFragment = supportFragmentManager.findFragmentById(R.id.target_fragment_container) as? TargetFragment targetFragment?.updateUI(data) } // Alan fragmentte fun updateUI(data: String) { // ... UI güncellemesi } -
Fragment Sonuç API'si: Fragmentler arasında veri alışverişi için modern ve önerilen yöntem.
// Gönderen fragmentte (sonucu ayarlama) setFragmentResult("requestKey", bundleOf("bundleKey" to "value")) // Alan fragmentte (sonucu dinleme) setFragmentResultListener("requestKey") { requestKey, bundle -> val result = bundle.getString("bundleKey") // ... sonuç kullanımı }