【发布时间】:2018-12-15 15:28:50
【问题描述】:
我有一个包含关联视图模型的活动。视图模型从在线存储库加载数据。在同一个活动中,我有一个包含 viewpager 的表格布局。在视图页面中有几个片段。
如何访问片段中的活动视图模型?
【问题讨论】:
标签: android
我有一个包含关联视图模型的活动。视图模型从在线存储库加载数据。在同一个活动中,我有一个包含 viewpager 的表格布局。在视图页面中有几个片段。
如何访问片段中的活动视图模型?
【问题讨论】:
标签: android
你可以像这样在片段之间共享视图模型
类 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
或者只是在您的活动中公开您的视图模型,然后在您的片段中调用它,例如:
(activity as MainActivity).viewmodel // MainActivity 是你的活动
【讨论】: