编程基础与事件状态 07:同一屏幕组织专注、统计和设置

课程首页 · 全部知识课程 · 返回专题主页

本系列第 7/8 课,建议 45–60 分钟(估算)。先完成上一课。

下载本课完成工程 .aia

这课解决什么

虚拟页面是同一屏幕里不同排列的可见状态,业务变量仍是一份。导航切换只切 Visible,不调用开始或初始化。设置面板修改的是下一次任务参数,当前运行参数已经保存。

先预测,再运行

切到统计,再切回专注,会重新开始计时吗?

先记下自己的答案,运行起始工程与完成工程比较;答案见文末。

开始实战

以上一课完成工程为起点,先导入并运行,再另存为本课作业。

完成工程可以查看答案;独立作业请保留自己的修改。

新增或调整的组件

实例名 组件 本课配置
标签_标题 标签 Width=Fill parent;FontSize=24;TextColor=#183153;Text=专注学习 · 第 7课
垂直布局_专注 垂直布局 Width=Fill parent;Visible=True
垂直布局_统计 垂直布局 Width=Fill parent;Visible=False
标签_统计 标签 Width=Fill parent;FontSize=16;TextColor=#183153;Text=尚无完成记录
垂直布局_设置 垂直布局 Width=Fill parent;Visible=False
标签_设置状态 标签 Width=Fill parent;FontSize=16;TextColor=#183153;Text=填写时长后保存
标签_说明 标签 Width=Fill parent;FontSize=16;TextColor=#183153;Text=时长 1–180 分钟。运行任务在重启后恢复为暂停,恢复时不会计入离开应用期间。
按钮_保存设置 按钮 Width=Fill parent;BackgroundColor=#2563EB;TextColor=#FFFFFF;FontSize=16;Text=保存设置
微数据库1 微数据库 Namespace=FocusA07
导航条1 导航条 ItemCount=3;Position=bottom

逐步搭建

  1. 把任务和控制按钮放在专注面板,记录摘要放在统计面板,时长输入与保存放在设置面板。
  2. 加入导航条,三项文字为专注、统计、设置;初始化设置导航项目。
  3. ItemSelected 根据 index 设置三个面板 Visible,统计读取现有记录。
  4. 运行任务期间切三页;截止不变。保存有效时长后开始下一项,确认新参数生效。

专注学习助手第7课运行状态布局预览

图来自本课最终工程执行积木后的状态,为 HTML 近似预览;不是手机截图。

核心积木与数据流

下面是本课完成工程中的核心代码,包含所需全局变量和过程。可在块图中追踪数值,再回到工程对照完整事件;合并到已有工程时,同名事件合并处理。

global 完成数 = 0
global 记录 = []



when 导航条1.ItemSelected(index) {
垂直布局_专注.Visible = index = 1
垂直布局_统计.Visible = index = 2
垂直布局_设置.Visible = index = 3
标签_统计.Text = join("累计完成:", 完成数, "\n", join(记录))
}

中途检查与排错

本课以下控制与数据流已执行最终归档中的真实积木检查。请在伴侣或安装的 APK 中按相同场景操作,记录实际结果;自动检查通过不代表手机已实测。

  1. 拒绝空任务。
  2. 非数字、非正数、上限、小数拒绝。
  3. 2分钟等于120秒。
  4. 延迟回调按实际时间计算。
  5. 运行中重复开始不重置。
  6. 重启读取设置、记录和暂停快照。
  7. 暂停期间不扣时。
  8. 切页不重启任务。
  9. 完成记录持久化。
  10. 到期与重复计时回调。

排查时先确定出错的是输入、状态、数据读取还是显示;用标签暂时显示关键值,每次只改变一个条件。

计时器用于前台刷新;重启恢复暂停快照,可能回退约五秒。系统时间被修改会影响截止计算,不能用本项目承诺可靠的系统闹钟。

两个理解题与独立改造

  1. 切到统计,再切回专注,会重新开始计时吗?
  2. 切页后清空全局变量为什么可能破坏任务?

独立改造: 在统计页显示每条记录,而不是整个列表的文本表示。

先完成自己的工程,再对照答案。检查成功路径,也检查空数据、重复操作和取消;写出你改动的规则。

查看预测与练习参考答案

预测: 不会。导航事件只切换面板,计时器和截止没有重新初始化。

追踪: 虚拟页面共享业务状态,切页只应更新可见性,不能重置截止和剩余。

改造思路: 遍历记录,用 join 累加换行;初始化空文本,空列表单独显示暂无记录。不要给每次刷新重复追加旧记录。

完成与下一步

保存自己的工程并导出 .aia;给文件命名以区分本课作业和参考源码。请用自己的话解释本课知识,并展示一次失败输入的处理。

上一课 · 下一课:独立完成专注与休息循环

文档反馈