第 14 课2026.09.18
把上一课收集到的 running 状态显示到按钮文字中。
第 14 课:状态更新按钮文字
- 日期:2026-09-18
- 课程序号:第 14 课
- 知识点:状态驱动按钮文字
用途或适用场景
把上一课收集到的 running 状态显示到按钮文字中。
核心概念
collectLatest 每次收到 StateFlow 新值时更新现有 ViewBinding;业务状态仍只由 ViewModel 持有。
最小代码或操作示例
text
lifecycleScope.launch { repeatOnLifecycle(Lifecycle.State.STARTED) { viewModel.running.collectLatest { running -> binding.toggleButton.text = if (running) "停止" else "开始" } } }3~5 分钟练习
把 false 时的文字改成“开始练习”。
参考答案
把 else 分支改为 "开始练习"。
与上一课的联系
继承上一课的 repeatOnLifecycle 收集;本课只把 running 映射为按钮文字;完成后下一课可由按钮调用 ViewModel.toggle。
时效校验
时效校验:2026-09-21(Android 17 / SDK API 37 与 AndroidX Lifecycle 当前文档;repeatOnLifecycle 需 lifecycle-runtime-ktx 2.4.0+,collectLatest 与 ViewBinding 用法未见废弃标记)。