Sobes.tech
Junior — Middle

Ինչ մեթոդներով է իրականացվում փոխազդեցությունը նույն Activity-ում գտնվող Fragment-ների միջև?

sobes.tech AI

Պատասխան AI-ից

Նույն Activity-ի մեջ գտնվող ֆրագմենտների փոխազդեցությունը սովորաբար իրականացվում է միջնորդող Activity-ի միջոցով: Հիմնական մեթոդները:

  1. Callback ինտերֆեյսի միջոցով

    • Ֆրագմենտը հայտարարում է տվյալների փոխանցման մեթոդներ պարունակող ինտերֆեյս:
    • Activity-ն իրականացնում է այդ ինտերֆեյսը և ստանում է տվյալներ ֆրագմենտից:
    • Activity-ն փոխանցում է տվյալները մյուս ֆրագմենտին:
  2. ViewModel օգտագործելով՝ Activity-ի կյանքի ցիկլի հետ համատեղ (Shared ViewModel)

    • Ստեղծվում է ViewModel, որը կապված է Activity-ի հետ:
    • Երկու ֆրագմենտներն ունեն նույն ViewModel-ի հասանելիությունը:
    • LiveData կամ այլ դիտվող օբյեկտների միջոցով ֆրագմենտները փոխանակում են տվյալներ:
  3. FragmentManager օգտագործելով՝ ֆրագմենտների որոնում և նրանց մեթոդների ուղղակի կանչում

    • Ավելի քիչ նախընտրելի մեթոդ, քանի որ այն մեծացնում է կապը:

Օրինակ՝ ինտերֆեյսով:

// Ֆրագմենտ 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)
    }
}