App Inventor 2 获取启动值与Screen传值教程

« 返回首页

问题描述

用户问:”在app inventor2中 积木方块(获取启动值)在哪个位置?”

获取启动值的位置

积木块位置

Blocks Editor → Control 积木块分类 → 最底部

具体路径:

  1. 点击左侧 “Control” 分类
  2. 向下滚动到底部
  3. 找到 “get start value”(获取启动值)

相关积木块

积木块 位置 说明
获取启动值 Control 获取传入的值
获取起始值 Control 同上(旧版翻译)
打开另一个屏幕并传值 Control 跳转并传值
关闭屏幕并传值 Control 返回并传值
其他屏幕关闭 Control 接收返回值

用法详解

Screen1发送数据

当 按钮_跳转.被点击
  设 传递数据 = "你好,这是来自Screen1的数据"
  调用 打开另一个屏幕并传值("Screen2", 传递数据)

Screen2接收数据

当 Screen2.初始化()
  设 收到的数据 = 获取启动值()
  如果 收到的数据 ≠ ""
    标签_显示.文本 = "收到:" & 收到的数据
  否则
    标签_显示.文本 = "没有收到数据"

传递复杂数据

可以传递列表、字典等复杂数据:

' 传递字典
设 用户信息 = 创建字典(
  "name" → "张三",
  "age" → 25,
  "score" → 95
)
调用 打开另一个屏幕并传值("Screen2", 用户信息)

' Screen2接收
当 Screen2.初始化()
  设 数据 = 获取启动值()
  设 姓名 = 从字典 数据 获取 "name"
  设 年龄 = 从字典 数据 获取 "age"
  标签_信息.文本 = 姓名 & "," & 年龄 & "岁"

传递列表

设 选中的项目 = ["苹果", "香蕉", "橙子"]
调用 打开另一个屏幕并传值("Screen_List", 选中的项目)

' 接收端
当 Screen_List.初始化()
  设 列表 = 获取启动值()
  设 ListView1.元素 = 列表

返回数据

Screen2返回数据

当 按钮_确认.被点击
  设 返回值 = 输入框_输入.文本
  调用 关闭屏幕并传值(返回值)

Screen1接收返回数据

当 Screen1.其他屏幕关闭(屏幕名, 返回值)
  如果 屏幕名 = "Screen2"
    标签_返回.文本 = "Screen2返回:" & 返回值

完整流程图

Screen1                          Screen2
  |                                |
  |-- 打开另一个屏幕并传值(数据) -->|
  |                                |-- 获取启动值() → 收到数据
  |                                |   (处理数据)
  |                                |
  |<-- 关闭屏幕并传值(返回值) -----|
  |-- 其他屏幕关闭事件              |
  |   (处理返回值)                  |

常见问题

Q1: 获取启动值返回空字符串?

  • 确保使用了”打开另一个屏幕并传值“(不是”打开另一个屏幕”)
  • 检查传值的变量是否有内容
  • 确认在Screen.Initialize中调用(不是在其他事件中)

Q2: 可以在非Initialize事件中获取吗?

可以,”获取启动值”是一个函数,可以在任何时候调用。但通常在Initialize中获取并保存到变量。

Q3: 传递的数据大小有限制吗?

建议传递较小的数据(字符串、小列表)。大数据建议用TinyDB中转。

总结

积木块 用途 位置
获取启动值 接收传入数据 Control分类底部
打开另一个屏幕并传值 跳转+传数据 Control分类
关闭屏幕并传值 返回+传数据 Control分类
其他屏幕关闭 接收返回数据 Screen事件

版权声明:MIT App Inventor 官方文档采用 CC BY-SA 4.0 授权,本文档由 ai2claw 🐝 整理。

文档反馈