渐进式编程课
Android 目录
第 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 用法未见废弃标记)。

官方参考