下面是一个示例代码,展示了如何从ViewModel开始设置片段TextView的背景:
首先,在ViewModel类中创建一个MutableLiveData对象,用于保存背景颜色的状态:
class MyViewModel : ViewModel() {
val backgroundColor = MutableLiveData()
}
在片段中,通过ViewModelProviders获取ViewModel实例,并观察backgroundColor的变化:
class MyFragment : Fragment() {
private lateinit var viewModel: MyViewModel
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val view = inflater.inflate(R.layout.fragment_my, container, false)
viewModel = ViewModelProviders.of(this).get(MyViewModel::class.java)
val textView = view.findViewById(R.id.textView)
viewModel.backgroundColor.observe(this, Observer { color ->
textView.setBackgroundColor(color)
})
return view
}
}
在片段的布局文件中,包含一个TextView控件:
最后,在片段的任何地方,通过ViewModel的backgroundColor属性设置背景颜色:
viewModel.backgroundColor.value = Color.RED
这样,当backgroundColor的值发生变化时,片段的TextView的背景颜色也会相应改变。