首页 > 解决方案 > 在 MVVM 架构中从 ViewModel 更改片段

问题描述

我正在开发一个用于实践 MVVM 架构和 SQLite 数据库的议程应用程序,但我需要从片段内部更改片段。所以对于 calendarFragment,我创建了这个 viewModel,但我不能在没有 MainActivity 上下文的情况下使用 .supportFragmentManager 方法。我怎么解决这个问题 ?


class calendarFragmentViewModel(application: Application) : AndroidViewModel(application) {

    fun fragmentChanger(fragment : Fragment, context: Context?) {
        var transaction = (context as MainActivity).supportFragmentManager.beginTransaction()
            transaction.replace(com.cagataysencan.agendea.R.id.frameLayout,fragment)
            transaction.commit()
        }
    }

标签: androidkotlinmvvm

解决方案


为此,您可以将 LiveData 与您的 ViewModel 一起使用。

从您的 Fragment 观察 LiveData,一旦 LiveData 提供更新,我们将在 Fragment 中获取它。在回调内部,您可以从观察片段启动。


推荐阅读