前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【鸿蒙 HarmonyOS】界面跳转 ( AbilitySlice 之间的界面跳转 | AbilitySlice 之间的值传递 )

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

作者头像
韩曙亮
发布2023-03-28 20:16:08
7790
发布2023-03-28 20:16:08
举报
文章被收录于专栏:韩曙亮的移动开发专栏

文章目录

参考文档 :

一、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. 前缀 ;

代码语言:javascript
复制
// 设置布局文件
super.setUIContent(ResourceTable.Layout_ability_main);

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

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

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

代码语言:javascript
复制
// 获取 XML 布局中的 Button 按钮
Button button = (Button) findComponentById(ResourceTable.Id_button);

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

代码语言:javascript
复制
        // 设置 Button 按钮点击事件
        button.setClickedListener(new Component.ClickedListener() {
            @Override
            public void onClick(Component component) {
            }
        });

3. 获取 Text 组件 , 并设置显示内容 : 调用 findComponentById ( ) 方法获取 Text 组件 , 需要强制转换 ;

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

代码语言:javascript
复制
        // 获取 Text 文字显示组件
        Text text = (Text) findComponentById(ResourceTable.Id_text);

        // 获取 Intent 中的数据 , 并显示到界面中
        text.setText("页面 2 数据 : " + intent.getIntParam("DATA", 0));

4. 页面跳转 :

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

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

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

代码语言:javascript
复制
                // 1. 初始化要跳转的界面
                AbilitySlice slice = new MainAbilitySlice2();

                // 2. 初始化传递的 Intent 意图
                Intent intent = new Intent();
                intent.setParam("DATA", 888);

                // 3. 跳转到 MainAbilitySlice2 界面
                present(slice, intent);

二、完整代码示例


MainAbilitySlice 源码 :

代码语言:javascript
复制
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);
    }
}

MainAbilitySlice 的 XML 布局文件 :

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<DirectionalLayout
    xmlns:ohos="http://schemas.huawei.com/res/ohos"
    ohos:height="match_parent"
    ohos:width="match_parent"
    ohos:orientation="vertical">

    <Text
        ohos:id="$+id:text"
        ohos:height="match_content"
        ohos:width="match_content"
        ohos:background_element="$graphic:background_ability_main"
        ohos:layout_alignment="horizontal_center"
        ohos:text="页面 1"
        ohos:text_size="50"
    />

    <Button
        ohos:id="$+id:button"
        ohos:height="match_parent"
        ohos:width="match_content"
        ohos:layout_alignment="bottom|horizontal_center"
        ohos:text="跳转到 2 页面"
        ohos:text_size="50"
        />

</DirectionalLayout>

MainAbilitySlice2 源码 :

代码语言:javascript
复制
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 MainAbilitySlice2 extends AbilitySlice {
    @Override
    public void onStart(Intent intent) {
        super.onStart(intent);
        super.setUIContent(ResourceTable.Layout_ability_main2);

        // 获取 Text 文字显示组件
        Text text = (Text) findComponentById(ResourceTable.Id_text);

        // 获取 Intent 中的数据 , 并显示到界面中
        text.setText("页面 2 数据 : " + intent.getIntParam("DATA", 0));
    }

    @Override
    public void onActive() {
        super.onActive();
    }

    @Override
    public void onForeground(Intent intent) {
        super.onForeground(intent);
    }
}

MainAbilitySlice2 的 XML 布局文件 :

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<DirectionalLayout
    xmlns:ohos="http://schemas.huawei.com/res/ohos"
    ohos:height="match_parent"
    ohos:width="match_parent"
    ohos:orientation="vertical">

    <Text
        ohos:id="$+id:text"
        ohos:height="match_content"
        ohos:width="match_content"
        ohos:background_element="$graphic:background_ability_main"
        ohos:layout_alignment="horizontal_center"
        ohos:text="页面 2"
        ohos:text_size="50"
        />

</DirectionalLayout>

三、运行结果


运行后初始主界面 :

点击 " 跳转到 2 页面 " 按钮 ;

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-12-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一、AbilitySlice 之间的界面跳转
  • 二、完整代码示例
  • 三、运行结果
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档