Sobes.tech
Middle

Activity менен фрагменттин өз ара аракеттенүүсүн кантип уюштуруу керек?

sobes.tech AI

AIден жооп

Androidда Activity менен фрагменттин өз ара аракеттешүүсү бир нече жол менен уюштурулушу мүмкүн:

  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 жана фрагменттин ортосунда маалымат алмашууга мүмкүндүк берет.
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ден фрагментке маалымат берүү.

Метод тандоо тапшырга жана колдонмонун архитектурасына көз каранды.