Как обновить viewmodel из другого фрагмента? - PullRequest
0 голосов
/ 12 мая 2019

Я пытаюсь передать данные о местоположении из одного фрагмента в 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.Также у меня есть сомнения, если это надежное решение для архивирования того, что я хочу.

Как мне добиться этого надежным способом?

...