Junior — Middle
Vai ir iespējams izmantot to pašu ViewModel, lai apmainītos ar datiem starp diviem fragmentiem navigācijas laikā?
sobes.tech AI
Atbilde no AI
Jā, ir iespējams izmantot to pašu ViewModel, lai apmainītos ar datiem starp diviem fragmentiem navigācijas laikā, ja ViewModel ir saistīta ar kopīgu dzīves cikla īpašnieku, piemēram, ar Activity. Šādā gadījumā abi fragmenti piekļūst tai pašai ViewModel, kas ļauj tiem apmainīties ar datiem bez tiešas saistības.
Piemērs:
// Iegūt ViewModel, kas ir saistīta ar Activity
val sharedViewModel = ViewModelProvider(requireActivity()).get(SharedViewModel::class.java)
// Fragment A iestata datus
sharedViewModel.someData.value = "Sveiki no Fragment A"
// Fragment B novēro izmaiņas
sharedViewModel.someData.observe(viewLifecycleOwner) { data ->
// Izmanto saņemtos datus
}
Tādējādi ViewModel darbojas kā kopīgs datu avots starp fragmentiem, vienkāršojot komunikāciju un saglabājot datus konfigurācijas maiņas laikā.