Junior
Чӣ гуна маълумотҳоро аз як қисм ба дигарӣ интиқол додан мумкин аст?
sobes.tech AI
Ҷавоб аз AI
-
Аргументи пакета: Барои интиқол додани намудҳои primitives ва объектҳое, ки
ParcelableёSerializable-ро иҷро мекунанд, ҳангоми эҷоди намунаи нав аз фрагмент истифода мешавад.// Дар фрагменти фиристанда val bundle = Bundle().apply { putString("key", "value") } val fragment = TargetFragment().apply { arguments = bundle } // Дар фрагменти қабулкунанда override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) val value = arguments?.getString("key") // ... истифодаи value } -
ViewModel-и умумӣ: Фрагментҳое, ки ба як Activity тааллуқ доранд, метавонанд барои мубодилаи маълумот як
ViewModel-ро истифода баранд.// SharedViewModel class SharedViewModel : ViewModel() { val data = MutableLiveData<String>() } // Дар фрагменти фиристанда private val sharedViewModel: SharedViewModel by activityViewModels() sharedViewModel.data.value = "value" // Дар фрагменти қабулкунанда private val sharedViewModel: SharedViewModel by activityViewModels() sharedViewModel.data.observe(viewLifecycleOwner) { value -> // ... истифодаи value } -
Истифодаи интерфейс callback: Як фрагмент методро дар Activity даъват мекунад, ва Activity баъдан методро дар дигар фрагмент даъват мекунад.
// Интерфейс дар Activity ё файли алоҳида interface DataTransferListener { fun onDataReceived(data: String) } // Дар фрагменти фиристанда (activity as? DataTransferListener)?.onDataReceived("value") // Дар Activity, ки интерфейсро иҷро мекунад override fun onDataReceived(data: String) { val targetFragment = supportFragmentManager.findFragmentById(R.id.target_fragment_container) as? TargetFragment targetFragment?.updateUI(data) } // Дар фрагменти қабулкунанда fun updateUI(data: String) { // ... навсозии UI бо маълумот } -
API-и натиҷаи фрагмент: Роҳи муосир ва тавсияшуда барои мубодилаи маълумот байни фрагментҳо.
// Дар фрагменти фиристанда (муқаррар кардани натиҷа) setFragmentResult("requestKey", bundleOf("bundleKey" to "value")) // Дар фрагменти қабулкунанда (гӯш кардани натиҷа) setFragmentResultListener("requestKey") { requestKey, bundle -> val result = bundle.getString("bundleKey") // ... истифодаи result }