Sobes.tech
Middle

Чӣ гуна ташкил додани ҳамкории байни Activity ва фрагмент?

sobes.tech AI

Ҷавоб аз AI

Интераксияи байни Activity ва фрагмент дар Android метавонад бо чанд роҳ ташкил карда шавад:

  1. Тарзи тавассути интерфейсҳо. Фрагмент интерфейси бо методҳои callback эълон мекунад, ки Activity онро иҷро мекунад. Фрагмент ин методҳоро барои интиқоли маълумот ё ҳодисаҳо ба Activity истифода мебарад.
class MyFragment : Fragment() {
    interface OnDataPass {
        fun onDataPass(data: String)
    }

    private lateinit var dataPasser: OnDataPass

    override fun onAttach(context: Context) {
        super.onAttach(context)
        dataPasser = context as OnDataPass
    }

    fun passData(data: String) {
        dataPasser.onDataPass(data)
    }
}

class MyActivity : AppCompatActivity(), MyFragment.OnDataPass {
    override fun onDataPass(data: String) {
        // Коркарди маълумот аз фрагмент
    }
}
  1. Истифодаи ViewModel бо давраи ҳаёти Activity. ViewModel умумӣ имкон медиҳад, ки Activity ва фрагмент маълумот тавассути LiveData мубодила кунанд.
class SharedViewModel : ViewModel() {
    val data = MutableLiveData<String>()
}

// Дар Activity ва фрагмент
val model = ViewModelProvider(requireActivity()).get(SharedViewModel::class.java)

// Фрагмент маълумотҳоро нав мекунад
model.data.value = "Арзиш нав"

// Activity тағйиротҳоро назорат мекунад
model.data.observe(this) { value ->
    // Коркарди арзиш
}
  1. Истифодаи EventBus (масалан, Otto, EventBus) — намунаи нашр-абон барои мубодилаи ҳодисаҳо.

  2. Пас кардани аргументҳо тавассути Bundle ҳангоми сохтани фрагмент — барои интиқоли маълумот аз Activity ба фрагмент.

Интихоби усул вобаста ба вазифа ва архитектураи барнома мебошад.