问题描述
用户问:”在app inventor2中 积木方块(获取启动值)在哪个位置?”
获取启动值的位置
积木块位置
Blocks Editor → Control 积木块分类 → 最底部
具体路径:
- 点击左侧 “Control” 分类
- 向下滚动到底部
- 找到 “get start value”(获取启动值)
相关积木块
| 积木块 | 位置 | 说明 |
|---|---|---|
| 获取启动值 | Control | 获取传入的值 |
| 获取起始值 | Control | 同上(旧版翻译) |
| 打开另一个屏幕并传值 | Control | 跳转并传值 |
| 关闭屏幕并传值 | Control | 返回并传值 |
| 其他屏幕关闭 | Control | 接收返回值 |
用法详解
Screen1发送数据
when 按钮_跳转.Click() {
global 传递数据 = "你好,这是来自Screen1的数据"
openAnotherScreenWithStartValue("Screen2", 传递数据)
}
Screen2接收数据
when Screen2.Initialize() {
global 收到的数据 = getStartValue()
if (收到的数据 != "") {
标签_显示.Text = join("收到:", 收到的数据)
} else {
标签_显示.Text = "没有收到数据"
}
}
传递复杂数据
可以传递列表、字典等复杂数据:
// 传递字典
global 用户信息 = create_dictionary("name", "张三", "age", 25, "score", 95)
openAnotherScreenWithStartValue("Screen2", 用户信息)
// Screen2接收
when Screen2.Initialize() {
global 数据 = getStartValue()
global 姓名 = Dictionary.Get(数据, "name")
global 年龄 = Dictionary.Get(数据, "age")
标签_信息.Text = join(姓名, ",", 年龄, "岁")
}
传递列表
global 选中的项目 = ["苹果", "香蕉", "橙子"]
openAnotherScreenWithStartValue("Screen_List", 选中的项目)
// 接收端
when Screen_List.Initialize() {
global 列表 = getStartValue()
ListView1.Elements = 列表
}
返回数据
Screen2返回数据
when 按钮_确认.Click() {
global 返回值 = 输入框_输入.Text
closeScreenWithValue(返回值)
}
Screen1接收返回数据
when Screen1.OtherScreenClosed(屏幕名, 返回值) {
if 屏幕名 == "Screen2" {
标签_返回.Text = join("Screen2返回:", 返回值)
}
}
完整流程图
Screen1 Screen2
| |
|-- 打开另一个屏幕并传值(数据) -->|
| |-- 获取启动值() → 收到数据
| | (处理数据)
| |
|<-- 关闭屏幕并传值(返回值) -----|
|-- 其他屏幕关闭事件 |
| (处理返回值) |
常见问题
Q1: 获取启动值返回空字符串?
- 确保使用了”打开另一个屏幕并传值“(不是”打开另一个屏幕”)
- 检查传值的变量是否有内容
- 确认在Screen.Initialize中调用(不是在其他事件中)
Q2: 可以在非Initialize事件中获取吗?
可以,”获取启动值”是一个函数,可以在任何时候调用。但通常在Initialize中获取并保存到变量。
Q3: 传递的数据大小有限制吗?
建议传递较小的数据(字符串、小列表)。大数据建议用TinyDB中转。
总结
| 积木块 | 用途 | 位置 |
|---|---|---|
| 获取启动值 | 接收传入数据 | Control分类底部 |
| 打开另一个屏幕并传值 | 跳转+传数据 | Control分类 |
| 关闭屏幕并传值 | 返回+传数据 | Control分类 |
| 其他屏幕关闭 | 接收返回数据 | Screen事件 |
扫码添加客服咨询