Junior — Middle
Կարո՞ղ է նույն ViewModel-ը օգտագործել տվյալների փոխանակման համար երկու ֆրագմենտների միջև նավիգացիայի ժամանակ։
sobes.tech AI
Պատասխան AI-ից
Այո, հնարավոր է օգտագործել նույն ViewModel-ը տվյալների փոխանակման համար երկու ֆրագմենտների միջև նավիգացիայի ժամանակ, եթե ViewModel-ը կապված է ընդհանուր կյանքի ցիկլի սեփականատիրոջ հետ, օրինակ՝ Activity-ի։ Այս դեպքում երկու ֆրագմենտներն էլ ունեն մուտք դեպի նույն ViewModel-ը, ինչը նրանց հնարավորություն է տալիս փոխանակել տվյալներ առանց ուղղակի կապի։
Օրինակ՝
// Հաշվարկ ViewModel, որը կապված է Activity-ի հետ
val sharedViewModel = ViewModelProvider(requireActivity()).get(SharedViewModel::class.java)
// Ֆրագմենտ A-ն սահմանում է տվյալներ
sharedViewModel.someData.value = "Բարև Ֆրագմենտ A-ից"
// Ֆրագմենտ B-ն հետևում է փոփոխություններին
sharedViewModel.someData.observe(viewLifecycleOwner) { data ->
// Օգտագործել ստացված տվյալները
}
Այսպիսով, ViewModel-ը որպես ընդհանուր տվյալների աղբյուր է ծառայում ֆրագմենտների միջև, պարզեցնելով հաղորդակցությունը և պահելով տվյալները կոնֆիգուրացիայի փոփոխության ժամանակ։