Я пытаюсь передать данные о местоположении из одного фрагмента в ViewModel, которая обновляет мой интерфейс.
У меня есть фрагмент, который содержит MapBoxCoordinatesListener.Каждый раз, когда местоположение меняется, я хочу показать обновленные координаты пользователю.Метки для этого находятся на другом макете, и я могу получить к ним доступ через ViewModel MainActivity.
MainActivity:
override fun onCreate(savedInstanceState: Bundle?) {
(...)
showMapFragment()
initMainMenuBinding(activityMainBinding)
}
private fun initMainMenuBinding(activityMainBinding: ActivityMainBinding) {
mainMenuViewModel = MainMenuViewModel()
mainMenuViewModel.mainButtonsCallback = object : MainMenuViewModel.MainButtonsCallback {
(..)
}
activityMainBinding.mainMenu.viewModel = mainMenuViewModel
}
private fun showMapFragment() {
mapFragment = supportFragmentManager.findFragmentByTag(MapFragment.TAG)
?: MapFragment.newInstance()
val fragmentTransaction = supportFragmentManager.beginTransaction()
fragmentTransaction.replace(R.id.map_container, mapFragment, MapFragment.TAG)
fragmentTransaction.commit()
}
MainMenuViewModel:
class MainMenuViewModel : BaseObservable(){
lateinit var mainButtonsCallback: MainButtonsCallback
(...)
@get:Bindable
var latLangModel = LatLangModel("latitude", "longitude")
}
Я думал об отправке координат из MapFragment в действие с обратным вызовом, но тогда я не знаю, как передать данные в ViewModel.Также у меня есть сомнения, если это надежное решение для архивирования того, что я хочу.
Как мне добиться этого надежным способом?