Middle
Fragmentlar o'rtasida ma'lumot uzatishning barcha usullarini ro'yxatlang.
sobes.tech AI
AIdan javob
-
Bundle argumentlari: Eng keng tarqalgan usul. Ma'lumotlar
setArguments()metodidan foydalanib, Bundle shaklida yuboriladi.// Yuboruvchi fragmentda val bundle = Bundle() bundle.putString("key", "value") val targetFragment = TargetFragment() targetFragment.arguments = bundle // ... TargetFragmentga o'tish // Qabul qiluvchi fragmentda override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) val value = arguments?.getString("key") // ... qiymatdan foydalanamiz } -
Ulashilgan ViewModel: Faoliyat yoki bir nechta fragmentlarning hayot aylanishiga bog'liq ma'lumotlarni uzatish uchun ishlatiladi.
// ViewModelda class SharedViewModel : ViewModel() { val data = MutableLiveData<String>() } // Ikkala fragmentda private val sharedViewModel: SharedViewModel by activityViewModels() // Yuboruvchi fragmentda sharedViewModel.data.value = "uzatiladigan ma'lumotlar" // Qabul qiluvchi fragmentda sharedViewModel.data.observe(viewLifecycleOwner) { data -> // ... ma'lumotdan foydalanamiz } -
Callback interfeyslari: Fragment, faoliyat tomonidan amalga oshiriladigan interfeysni aniqlashi mumkin. Fragment, bu interfeys metodlarini chaqirib, ma'lumotlarni faoliyatga uzatadi va faoliyat, ularni boshqa fragmentga o'tkazishi mumkin.
// Yuboruvchi fragmentda interfeys interface OnDataPass { fun onDataPass(data: String) } // Yuboruvchi fragmentda private var dataPasser: OnDataPass? = null override fun onAttach(context: Context) { super.onAttach(context) if (context is OnDataPass) { dataPasser = context } else { throw RuntimeException("$context OnDataPassni amalga oshirmoqda") } } fun passData(data: String) { dataPasser?.onDataPass(data) } // Faoliyat class MainActivity : AppCompatActivity(), OnDataPass { override fun onDataPass(data: String) { val targetFragment = supportFragmentManager.findFragmentById(R.id.target_fragment) as? TargetFragment targetFragment?.updateData(data) // TargetFragmentda updateData metodi mavjud deb faraz qilamiz } } // Qabul qiluvchi fragment fun updateData(data: String) { // ... UI ni yangilash yoki ma'lumotni saqlash } -
Fragment Result API: Fragmentlar o'rtasida natijalarni uzatish uchun zamonaviy usul, AndroidX Fragment versiya 1.3.0 da taqdim etilgan.
// Yuboruvchi fragmentda setFragmentResult("requestKey", bundleOf("bundleKey" to "natija")) // Qabul qiluvchi fragmentda setFragmentResultListener("requestKey") { requestKey, bundle -> val result = bundle.getString("bundleKey") // ... natijadan foydalanamiz }