我有一个包含相关视图模型的活动。视图模型从在线存储库加载数据。在同一活动中,我有一个包含viewpager的表布局。在视图页面中有几个片段。
如何访问片段中的活动视图模型?
答案 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是您的活动