Sobes.tech
Junior — Middle

Бир Activity ичинде жайгашкан Fragmentтердин ортосунда кандай ыкмалар менен өз ара аракеттешүү жүргүзүлөт?

sobes.tech AI

AIден жооп

Бир Activity ичиндеги фрагменттер ортосундагы өз ара аракеттешүү адатта арачылык кылган Activity аркылуу ишке ашырылат. Негизги ыкмалар:

  1. Callback интерфейси аркылуу (Callback Interface)

    • Фрагмент маалыматтарды өткөрүү үчүн методдор менен интерфейс жарыялайт.
    • Activity бул интерфейсти ишке ашырып, бир фрагменттен маалымат алат.
    • Activity башка фрагментке маалымат берет.
  2. ViewModel колдонуу жана Activityнин жашоо цикли менен бөлүшүү (Shared ViewModel)

    • Activity менен байланышкан ViewModel түзүлөт.
    • Эки фрагмент да ошол эле ViewModelге кире алышат.
    • LiveData же башка көзөмөлгө алынган объекттер аркылуу фрагменттер маалымат алмашат.
  3. FragmentManager колдонуп, фрагменттерди издөө жана алардын методдорун түздөн-түз чакыруу

    • Азырынча эң жакшы эмес ыкма, анткени ал байланыштуулукты көбөйтөт.

Интерфейс менен мисал:

// Fragment Aда
interface OnDataPass {
    fun onDataPass(data: String)
}

class FragmentA : Fragment() {
    lateinit var dataPasser: OnDataPass

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

    fun passData() {
        dataPasser.onDataPass("FragmentAдан салам")
    }
}

// Activityда
class MainActivity : AppCompatActivity(), FragmentA.OnDataPass {
    override fun onDataPass(data: String) {
        val fragmentB = supportFragmentManager.findFragmentById(R.id.fragmentB) as FragmentB
        fragmentB.updateData(data)
    }
}