如何从另一个片段更新视图模型?

时间:2019-05-12 12:18:13

标签: android mvvm kotlin data-binding mapbox-android

我正在尝试将位置数据从一个片段传递到更新我的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。我也怀疑这是否是一个强大的解决方案来存档我想要的内容。

如何以一种可靠的方式实现这一目标?

0 个答案:

没有答案