我正在尝试将位置数据从一个片段传递到更新我的UI的ViewModel。
我有一个包含MapBoxCoordinatesListener的片段。每次更改位置时,我都想向用户显示更新的坐标。执行此操作的标签在另一个布局上,我可以通过MainActivity的ViewModel访问它们。
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。我也怀疑这是否是一个强大的解决方案来存档我想要的内容。
如何以一种可靠的方式实现这一目标?