Sobes.tech
Junior — Middle

Кадом усулҳо барои муоширати байни Fragmentҳо, ки дар як Activity ҷойгир шудаанд, истифода мешаванд?

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)
    }
}