【鸿蒙 HarmonyOS】界面跳转 ( Page Ability 的 action 标识 | Page Ability 之间的界面跳转及传递数据 | 鸿蒙工程下创建 Module | 代码示例 )(一)

简介: 【鸿蒙 HarmonyOS】界面跳转 ( Page Ability 的 action 标识 | Page Ability 之间的界面跳转及传递数据 | 鸿蒙工程下创建 Module | 代码示例 )(一)

文章目录

一、Page Ability 的 action 标识

二、Page Ability 之间的界面跳转及传递数据

三、鸿蒙工程下创建 Module

四、代码示例

五、执行效果



参考文档 :


Page Ability 基本概念

Page Ability 声明周期

AbilitySlice 间导航

跨设备迁移





一、Page Ability 的 action 标识


Page Ability 标识 : action 字符串 ;


Page Ability 界面跳转 , 其中 Page Ability 是通过 action 字符串进行标记的 , 每个 Page Ability 对应的 action 字符串在 src/main/ 下的 config.json 中配置 ,


其中 “abilities” 是配置所有的 Ability , 前者是主界面的 Ability , 后者是要跳转的 Ability , 两个都配置在 “abilities”: [] 中 , 中间使用逗号隔开 ;


"abilities": [
      {
        "orientation": "unspecified",
        "visible": true,
        "name": "com.example.ability.MainAbility",
        "icon": "$media:icon",
        "description": "$string:mainability_description",
        "label": "ability",
        "type": "page",
        "launchType": "standard"
      },
      {
        "skills":[
          {
            "actions":[
              "ability.intent.MainAbility2"
            ]
          }
        ],
        "orientation": "unspecified",
        "visible": true,
        "name": "com.example.ability.MainAbility2",
        "icon": "$media:icon",
        "description": "$string:mainability_description",
        "label": "ability",
        "type": "page",
        "launchType": "standard"
      }
    ]


配置 Ability 的 action 字符串 , 在 Ability 中添加如下配置 , 即可配置该 Page Ability 的 action 字符串 ;


下面配置的 com.example.ability.MainAbility2 的界面标识是

“ability.intent.MainAbility2” 字符串 ;
        "skills":[
          {
            "actions":[
              "ability.intent.MainAbility2"
            ]
          }
        ]






二、Page Ability 之间的界面跳转及传递数据


两个 Page Ability , 对应的两个 AbilitySlice , 以及两个 布局文件 ;


核心逻辑都在两个 AbilitySlice 中 ;




1. Page Ability 设置 AbilitySlice :


创建两个 MainAbility , 初始状态下进入的是 MainAbility , 然后跳转到 MainAbility2 ;



初始 AbilitySlice 如下 , 在 onStart ( ) 方法中 , 调用 super.setUIContent ( ) 方法设置 XML 布局文件 , 相当于 Android 中的 setContentView ( ) 方法 ;


XML 布局文件使用 ResourceTable.Layout_ability_main 方式引用 ;


上述实际的布局文件是在 HarmonyHelloWorld\entry\src\main\resources\base\layout 目录下的 ability_main.xml 布局文件 ;


引用时在 ability_main 文件名称前 , 加上了 ResourceTable.Layout_ 前缀 , 相当于 Android 中的 R.layout. 前缀 ;


// 设置布局文件
super.setUIContent(ResourceTable.Layout_ability_main);




2. 获取按钮组件 , 并设置点击事件 :


在 AbilitySlice 中 , 调用 findComponentById ( ) 方法 , 可以获取按钮组件 ;


获取的对象类型是 Component , 需要强转为 Button 对象 ;


// 获取 XML 布局中的 Button 按钮
Button button = (Button) findComponentById(ResourceTable.Id_button);


设置按钮点击事件 : 调用 setClickedListener ( ) 方法 , 设置 Component.ClickedListener 类型的点击监听器 , 按钮被点击后 , 会自动回调 onClick ( ) 方法 ;


     

// 设置 Button 按钮点击事件
        button.setClickedListener(new Component.ClickedListener() {
            @Override
            public void onClick(Component component) {
            }
        });



3. Page Ability 界面跳转 :


首先要初始化 Intent 意图对象 , 然后调用 Intent 对象的 setAction ( ) 方法设置 action 字符串 , 和 setParam ( ) 方法传递的数据 , 最后调用 startAbility ( ) 启动另外一个 action 字符串对应的 Page Ability 界面 ;


       

// 初始化传递的 Intent 意图对象
                Intent intent = new Intent();
                // 设置跳转的目标 Page Ability 的 action 标识
                intent.setAction("ability.intent.MainAbility2");
                // 设置传递的数据
                intent.setParam("DATA", 888);
                // 跳转到目标 Page Ability
                startAbility(intent);




4. 获取 Text 组件 , 并设置显示内容 : 在跳转后的 Page Ability 中的 AbilitySlice 的 onStart ( ) 方法中 , 调用 findComponentById ( ) 方法获取 Text 组件 , 需要强制转换 ;


调用 Text 组件的 setText ( ) 方法 , 设置组件显示的文字内容 ;

// 获取 Text 文字显示组件
        Text text = (Text) findComponentById(ResourceTable.Id_text);
        // 获取 Intent 中的数据 , 并显示到界面中
        text.setText("页面 2 数据 : " + intent.getIntParam("DATA", 0));




目录
相关文章
|
29天前
|
存储 JavaScript 开发者
探索鸿蒙新世界:ArkUI框架实战指南,解锁HarmonyOS应用UI设计的无限可能!
【10月更文挑战第19天】ArkUI框架是华为鸿蒙系统中用于开发用户界面的核心工具,支持ArkTS和eTS两种开发语言。本文介绍了ArkUI的基本概念、组件使用、布局管理和状态管理,通过示例代码帮助开发者轻松构建美观、高效的跨设备UI。
78 3
|
17天前
|
JavaScript 开发者 索引
鸿蒙next版开发:ArkTS组件通用属性(复用标识)
在HarmonyOS 5.0中,ArkTS的复用标识(Reused Identifier)是关键机制,用于标识和引用组件,特别是在列表渲染和组件复用中。本文详细解读了复用标识的通用属性和作用,并提供了示例代码,帮助开发者提高应用性能和效率。
78 1
|
17天前
|
开发者
鸿蒙next版开发:ArkTS组件通用属性(组件标识)
在HarmonyOS 5.0中,ArkTS的组件标识(ID)为每个组件提供唯一标识符,方便开发者引用和操作组件。本文详细解读了id和key属性的使用方法,并提供了示例代码,展示了如何通过组件标识获取属性、发送事件及动态操作组件。
84 1
|
22天前
深入理解Flutter鸿蒙next版本 中的Widget继承:使用extends获取数据与父类约束
本文详细介绍了Flutter中如何通过继承其他Widget来创建自定义组件。首先解释了Widget继承的基本概念,包括StatelessWidget和StatefulWidget的区别。接着通过具体示例展示了如何继承StatelessWidget和StatefulWidget,并在子类中访问父类的build方法和状态。最后,结合多个自定义Widget展示了如何在实际应用中灵活使用继承和组合来构建复杂的UI。
71 8
|
22天前
|
JavaScript API 开发工具
<大厂实战场景> ~ Flutter&鸿蒙next 解析后端返回的 HTML 数据详解
本文介绍了如何在 Flutter 中解析后端返回的 HTML 数据。首先解释了 HTML 解析的概念,然后详细介绍了使用 `http` 和 `html` 库的步骤,包括添加依赖、获取 HTML 数据、解析 HTML 内容和在 Flutter UI 中显示解析结果。通过具体的代码示例,展示了如何从 URL 获取 HTML 并提取特定信息,如链接列表。希望本文能帮助你在 Flutter 应用中更好地处理 HTML 数据。
103 1
|
27天前
|
存储 数据管理 调度
HarmonyOS架构理解:揭开鸿蒙系统的神秘面纱
【10月更文挑战第21天】华为的鸿蒙系统(HarmonyOS)以其独特的分布式架构备受关注。该架构包括分布式软总线、分布式数据管理和分布式任务调度。分布式软总线实现设备间的无缝连接;分布式数据管理支持跨设备数据共享;分布式任务调度则实现跨设备任务协同。这些特性为开发者提供了强大的工具,助力智能设备的未来发展。
81 1
|
29天前
|
JavaScript API 开发者
掌握ArkTS,打造HarmonyOS应用新视界:从“Hello World”到状态管理,揭秘鸿蒙UI开发的高效秘诀
【10月更文挑战第19天】ArkTS(ArkUI TypeScript)是华为鸿蒙系统中用于开发用户界面的声明式编程语言,结合了TypeScript和HarmonyOS的UI框架。本文介绍ArkTS的基本语法,包括组件结构、模板和脚本部分,并通过“Hello World”和计数器示例展示其使用方法。
60 1
|
1月前
|
数据可视化 JavaScript API
HarmonyOS NEXT原生重榜发布-安利一款鸿蒙可视化代码生成器
鸿蒙低代码可视化开发平台是基于华为鸿蒙操作系统构建的创新开发环境,旨在通过简化开发流程、降低技术门槛,加速应用从设计到上线的全过程。它融合了低代码开发的核心理念与鸿蒙系统的技术优势,为开发者提供了一条高效、便捷的应用开发之路。
55 2
|
22天前
|
JSON Dart 数据格式
<大厂实战场景> ~ flutter&鸿蒙next处理后端返回来的数据的转义问题
在 Flutter 应用开发中,处理后端返回的数据是常见任务,尤其涉及转义字符时。本文详细探讨了如何使用 Dart 的 `dart:convert` 库解析包含转义字符的 JSON 数据,并提供了示例代码和常见问题的解决方案,帮助开发者有效处理数据转义问题。
117 0
|
1月前
|
IDE 调度 开发工具
鸿蒙Flutter实战:08-如何调试代码
本文介绍了鸿蒙Flutter项目的开发环境搭建、配置、日志查看及调试方法。首先按照指南搭建开发环境,安装IDE插件;接着配置vscode的launch.json文件;通过IDE调试控制台或命令行查看日志;提供两种调试Flutter的方式,包括IDE直接运行和使用DevEco;最后介绍ArkTs和Webview的调试方法。
52 0