Sobes.tech
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-ը որպես ընդհանուր տվյալների աղբյուր է ծառայում ֆրագմենտների միջև, պարզեցնելով հաղորդակցությունը և պահելով տվյալները կոնֆիգուրացիայի փոփոխության ժամանակ։