App Inventor 2 多屏幕变量传递教程
解答高频问题:不同Screen之间变量是否互通?如何传递数据?
一、核心结论(先看这里)
⚠️ App Inventor 2 中,不同Screen之间的全局变量不互通!每个Screen是独立的,各自有自己的全局变量。Screen1的全局变量在Screen2中无法直接访问。 解决方案汇总:
| 方案 | 适用场景 | 难度 |
|---|---|---|
| 启动值(StartValue) | 跳转时传少量数据 | ⭐ |
| 本地微数据库(TinyDB) | 传任意数据,持久化 | ⭐ |
| 网络微数据库 | 多设备共享数据 | ⭐⭐ |
| 单Screen设计 | 根本解决方案 | ⭐⭐⭐ |
二、方案一:启动值(StartValue)
2.1 原理
跳转到新Screen时,可以携带一个字符串参数;新Screen通过”获取启动值”读取。2.2 发送方(Screen1)
2.3 接收方(Screen2)
2.4 “获取启动值”积木在哪里?
在控制代码块分类中,找到”打开另一屏幕并传值”和”获取启动值”。2.5 Screen2返回数据给Screen1
三、方案二:本地微数据库(TinyDB)推荐
3.1 原理
TinyDB存储在手机本地,所有Screen共享同一个TinyDB,是最简单可靠的跨Screen数据共享方案。3.2 Screen1写入数据
3.3 Screen2读取数据
3.4 TinyDB的命名空间
不同Screen的TinyDB默认共享同一个存储空间。如需隔离,设置不同的命名空间(Namespace) 属性:
四、方案三:单Screen设计(根本解决方案)
4.1 原理
用垂直布局模拟多个”页面”,通过显示/隐藏布局切换,所有数据都在同一个Screen中,完全不存在跨Screen传值问题。4.2 优点
- 所有全局变量在同一Screen,完全共享
- 无需传值,无需TinyDB
- 切换更流畅(无Screen跳转动画延迟)
五、常见问题
Q1:“获取启动值”积木在哪里?
在控制代码块分类中,搜索”启动值”即可找到。Q2:传递的数据太大怎么办?
- 启动值有长度限制,大数据用TinyDB
- 复杂对象先用
字典转JSON序列化,再存TinyDB
Q3:Screen关闭后数据还在吗?
- 全局变量:Screen关闭后销毁
- TinyDB:持久化,App重启后仍在
- 启动值:只在跳转时有效
Q4:多个Screen之间如何共享实时数据?
推荐单Screen设计,或用TinyDB + 计时器定时刷新。参考资料
文档版本:2026.03 | 作者:App Inventor 2 中文网 www.fun123.cn
参考资料与版权声明
原文来源
- MIT App Inventor 官方文档 - MIT App Inventor
- MIT App Inventor Community - MIT App Inventor Community
- MIT App Inventor GitHub - MIT CML
版权声明
本文档基于 MIT App Inventor 官方文档及社区资源整理,版权归原作者所有:- MIT App Inventor 官方文档采用 CC BY-SA 4.0 授权
- MIT App Inventor Community 帖子版权归原作者所有
