【鸿蒙 HarmonyOS】界面跳转 ( AbilitySlice 之间的界面跳转 | AbilitySlice 之间的值传递 )(一)

简介: 【鸿蒙 HarmonyOS】界面跳转 ( AbilitySlice 之间的界面跳转 | AbilitySlice 之间的值传递 )(一)

文章目录

一、AbilitySlice 之间的界面跳转

二、完整代码示例

三、运行结果



参考文档 :


Page Ability 基本概念

Page Ability 声明周期

AbilitySlice 间导航

跨设备迁移





一、AbilitySlice 之间的界面跳转


代码示例 GitHub 地址 : https://github.com/han1202012/HarmonyHelloWorld




1. Page Ability 设置 AbilitySlice :


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



初始 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. 获取 Text 组件 , 并设置显示内容 : 调用 findComponentById ( ) 方法获取 Text 组件 , 需要强制转换 ;


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


   

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




4. 页面跳转 :


① 创建 AbilitySlice : 创建要跳转到的 AbilitySlice 对象 ;


② 创建 Intent : 用于数据传递 ;


③ 调用 present ( ) 方法 : 传入 AbilitySlice 与 Intent 参数 , 即可完成 AbilitySlice 界面跳转 ;


           

// 1. 初始化要跳转的界面
                AbilitySlice slice = new MainAbilitySlice2();
                // 2. 初始化传递的 Intent 意图
                Intent intent = new Intent();
                intent.setParam("DATA", 888);
                // 3. 跳转到 MainAbilitySlice2 界面
                present(slice, intent);






二、完整代码示例


MainAbilitySlice 源码 :


package com.example.harmony.slice;
import com.example.harmony.ResourceTable;
import ohos.aafwk.ability.AbilitySlice;
import ohos.aafwk.content.Intent;
import ohos.agp.components.Button;
import ohos.agp.components.Component;
import ohos.agp.components.Text;
public class MainAbilitySlice extends AbilitySlice {
    @Override
    public void onStart(Intent intent) {
        super.onStart(intent);
        super.setUIContent(ResourceTable.Layout_ability_main);
        // 获取 XML 布局中的 Button 按钮
        Button button = (Button) findComponentById(ResourceTable.Id_button);
        // 设置 Button 按钮点击事件
        button.setClickedListener(new Component.ClickedListener() {
            @Override
            public void onClick(Component component) {
                // 初始化要跳转的界面
                AbilitySlice slice = new MainAbilitySlice2();
                // 初始化传递的 Intent 意图
                Intent intent = new Intent();
                intent.setParam("DATA", 888);
                // 跳转到 MainAbilitySlice2 界面
                present(slice, intent);
            }
        });
    }
    @Override
    public void onActive() {
        super.onActive();
    }
    @Override
    public void onForeground(Intent intent) {
        super.onForeground(intent);
    }
}



目录
相关文章
|
2月前
|
编解码 视频直播 开发工具
|
2月前
|
IDE 开发工具 Windows
鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之RowSplit容器组件
鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之RowSplit容器组件
78 0
|
11天前
|
传感器 监控 物联网
【HarmonyOS】鸿蒙操作系统架构——揭秘华为的最新科技壮举
【HarmonyOS】鸿蒙操作系统架构——揭秘华为的最新科技壮举
|
2月前
|
安全 调度
鸿蒙HarmonyOS实战-Stage模型(线程模型)
本文介绍了线程作为操作系统调度的最小单位,是进程中的执行流,具有轻量级、并发执行、共享资源、通信简单和上下文切换等特点。线程分为用户线程和内核线程,其中内核线程由操作系统管理,而用户线程由应用程序控制。线程用于提高程序性能和响应速度,尤其适合多任务并发处理。在HarmonyOS中,每个应用有主线程负责UI和 ArkTS 引擎管理,以及Worker线程执行耗时任务。线程间通信可通过Emitter实现事件同步和Worker进行异步操作。
|
2月前
|
Java 开发工具 Android开发
鸿蒙HarmonyOS 与 Android 的NDK有什么区别?
鸿蒙(HarmonyOS)和Android的NDK(Native Development Kit)是两个不同的概念,它们在设计理念、架构、开发方式和目标平台等方面存在着一些显著的不同。
58 0
|
2月前
|
IDE API 开发工具
鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Row容器组件
鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Row容器组件
63 1
|
2月前
|
IDE API 开发工具
鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Scroll容器组件
鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Scroll容器组件
278 0
|
11月前
|
IDE JavaScript API
HarmonyOS开发第一步,熟知开发工具DevEco Studio
本文主要以常见的功能点作为概述希望可以帮助到学习HarmonyOS的开发者。
294 0
|
2月前
|
JavaScript API
鸿蒙开发接口UI界面:【@ohos.mediaquery (媒体查询)】
鸿蒙开发接口UI界面:【@ohos.mediaquery (媒体查询)】
29 1
|
11月前
|
开发框架
HarmonyOS学习路之方舟开发框架—学习ArkTS语言(状态管理 四)
被@Observed装饰的类,可以被观察到属性的变化;子组件中@ObjectLink装饰器装饰的状态变量用于接收@Observed装饰的类的实例,和父组件中对应的状态变量建立双向数据绑定。这个实例可以是数组中的被@Observed装饰的项,或者是class object中是属性,这个属性同样也需要被@Observed装饰。单独使用@Observed是没有任何作用的,需要搭配@ObjectLink或者@Prop使用。

热门文章

最新文章