android - 在 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()
}
}
解决方案
为此,您可以将 LiveData 与您的 ViewModel 一起使用。
从您的 Fragment 观察 LiveData,一旦 LiveData 提供更新,我们将在 Fragment 中获取它。在回调内部,您可以从观察片段启动。