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 ფუნქციონირებს როგორც საერთო მონაცემთა წყარო ფრაგმენტებს შორის, გამარტივებს კომუნიკაციას და ინახავს მონაცემებს კონფიგურაციის ცვლილების დროს.