Middle
Ҳама усулҳои интиқоли маълумот байни қисмҳоро номбар кунед.
sobes.tech AI
Ҷавоб аз AI
-
Аргументии буфери: Роҳи маъмултарин. Маълумотҳо тавассути Bundle тавассути усули
setArguments()ба фрагмент дода мешаванд.// Дар фрагменти-пешниҳод val bundle = Bundle() bundle.putString("key", "value") val targetFragment = TargetFragment() targetFragment.arguments = bundle // ... гузаштан ба TargetFragment // Дар фрагменти-гиранда override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) val value = arguments?.getString("key") // ... истифодаи арзиш } -
Shared ViewModel: Барои интиқоли маълумотҳое, ки бо давраи ҳаёти фаъолият ё чанд фрагмент алоқаманданд, истифода мешавад.
// Дар ViewModel class SharedViewModel : ViewModel() { val data = MutableLiveData<String>() } // Дар ҳарду фрагмент private val sharedViewModel: SharedViewModel by activityViewModels() // Дар фрагменти-пешниҳод sharedViewModel.data.value = "Маълумоти интиқолёфта" // Дар фрагменти-гиранда sharedViewModel.data.observe(viewLifecycleOwner) { data -> // ... истифодаи маълумот } -
Интерфейсҳои қайту: Фрагмент метавонад интерфейси муайян кунад, ки фаъолият онро иҷро мекунад. Фрагмент методҳои ин интерфейсро даъват мекунад ва маълумотҳоро ба фаъолият медиҳад, ки баъдан метавонад онҳоро ба фрагменти дигар интиқол диҳад.
// Интерфейс дар фрагменти-пешниҳод interface OnDataPass { fun onDataPass(data: String) } // Фрагменти-пешниҳод private var dataPasser: OnDataPass? = null override fun onAttach(context: Context) { super.onAttach(context) if (context is OnDataPass) { dataPasser = context } else { throw RuntimeException("$context бояд OnDataPass-ро иҷро кунад") } } fun passData(data: String) { dataPasser?.onDataPass(data) } // Фаъолият class MainActivity : AppCompatActivity(), OnDataPass { override fun onDataPass(data: String) { val targetFragment = supportFragmentManager.findFragmentById(R.id.target_fragment) as? TargetFragment targetFragment?.updateData(data) // Методи updateData дар TargetFragment } } // Фрагменти қабулкунанда fun updateData(data: String) { // ... навсозии UI ё нигоҳ доштани маълумот } -
API-и натиҷаи фрагмент: Роҳи муосир барои интиқоли натиҷаҳо байни фрагментҳо, ки дар AndroidX Fragment версияи 1.3.0 муаррифӣ шудааст.
// Дар фрагменти-пешниҳод setFragmentResult("requestKey", bundleOf("bundleKey" to "натича")) // Дар фрагменти-гиранда setFragmentResultListener("requestKey") { requestKey, bundle -> val result = bundle.getString("bundleKey") // ... истифодаи натиҷа }