在视图模型之间共享数据

时间:2018-12-15 15:28:51

标签: android

我有一个包含相关视图模型的活动。视图模型从在线存储库加载数据。在同一活动中,我有一个包含viewpager的表布局。在视图页面中有几个片段。

如何访问片段中的活动视图模型?

1 个答案:

答案 0 :(得分:0)

您可以在片段之间共享viewmodel

MasterFragment类:Fragment(){

private lateinit var itemSelector: Selector

private lateinit var model: SharedViewModel

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    model = activity?.run {
        ViewModelProviders.of(this).get(SharedViewModel::class.java)
    } ?: throw Exception("Invalid Activity")
    itemSelector.setOnClickListener { item ->
        // Update the UI
    }
}

}

DetailFragment类:Fragment(){

private lateinit var model: SharedViewModel

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    model = activity?.run {
        ViewModelProviders.of(this).get(SharedViewModel::class.java)
    } ?: throw Exception("Invalid Activity")
    model.selected.observe(this, Observer<Item> { item ->
        // Update the UI
    })
}

}

https://developer.android.com/topic/libraries/architecture/viewmodel

或者只是在活动中公开您的viewmodel,然后在片段中调用它,例如:

(活动为MainActivity).viewmodel // MainActivity是您的活动