Junior — Middle
Ինչ մեթոդներով է իրականացվում փոխազդեցությունը նույն Activity-ում գտնվող Fragment-ների միջև?
sobes.tech AI
Պատասխան AI-ից
Նույն Activity-ի մեջ գտնվող ֆրագմենտների փոխազդեցությունը սովորաբար իրականացվում է միջնորդող Activity-ի միջոցով: Հիմնական մեթոդները:
-
Callback ինտերֆեյսի միջոցով
- Ֆրագմենտը հայտարարում է տվյալների փոխանցման մեթոդներ պարունակող ինտերֆեյս:
- Activity-ն իրականացնում է այդ ինտերֆեյսը և ստանում է տվյալներ ֆրագմենտից:
- Activity-ն փոխանցում է տվյալները մյուս ֆրագմենտին:
-
ViewModel օգտագործելով՝ Activity-ի կյանքի ցիկլի հետ համատեղ (Shared ViewModel)
- Ստեղծվում է ViewModel, որը կապված է Activity-ի հետ:
- Երկու ֆրագմենտներն ունեն նույն ViewModel-ի հասանելիությունը:
- LiveData կամ այլ դիտվող օբյեկտների միջոցով ֆրագմենտները փոխանակում են տվյալներ:
-
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)
}
}