写点什么

ArkUI-X 在 Android 上使用 Fragment 开发指南

作者:龙儿筝
  • 2025-06-12
    湖北
  • 本文字数:1828 字

    阅读完需:约 6 分钟

本文介绍将 ArkUI 框架的 UIAbility 跨平台部署至 Android 平台 Fragment 的使用说明,实现 Android 原生 Fragment 和 ArkUI 跨平台 Fragment 的混合开发,方便开发者灵活部署跨平台界面。

Android 工程配置

Android 工程的 PackageName 需要与 OpenHarmony 工程的 BundleName 一致;


请在 Android 应用的 gradle.properties 文件,使能 AndroidX:


android.useAndroidX=true
复制代码


请在 Android 应用的 build.gradle 文件增加 AndroidX Fragment 库的依赖项:


dependencies {    implementation  'androidx.appcompat:appcompat:1.4.1'}
复制代码

ArkUI-X 和 Android 平台集成所用关键类

应用工程 Android 逻辑部分的 StageApplication

应用需要继承 arkui_android_adapter.jar 包所提供的 StageApplication。StageApplication 用于初始化资源路径以及加载配置信息,例如:


package com.example.myapplication;import ohos.stage.ability.adapter.StageApplication;
public class MyApplication extends StageApplication { }
复制代码

应用工程 Android 逻辑部分 Fragment 的宿主 Activity

原生 Activity 需要继承 androidx.fragment.app.FragmentActivity,绑定 StageFragment 示例如下:


package com.example.myapplication;
import android.os.Bundle;
import androidx.fragment.app.FragmentActivity;import androidx.fragment.app.FragmentManager;
import ohos.stage.ability.adapter.StageFragment;
public class MainActivity extends FragmentActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);
StageFragment fragment = new HiFragment(); FragmentManager manager = getSupportFragmentManager(); manager.beginTransaction().add(R.id.frag,fragment).commit(); }}
复制代码


其中 activity_main.xml 文件示例如下:


<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical"    android:layout_width="match_parent"    android:layout_height="match_parent">
<LinearLayout android:id="@+id/frag" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal"> </LinearLayout>
</LinearLayout>
复制代码


如果当前 StageFragment 对应的 UIAbility 涉及页面跳转,Activity 需要重写 onBackPressed 方法,以便在手机 back 键点击或手势侧滑时逐级返回页面,否则会退出跨平台承载的 Activity 页面。


@Overridepublic void onBackPressed() {    if(fragment.onBackPressed()) {        super.onBackPressed();    }}
复制代码

参数传递

StageFragment 支持传递参数,参数的传递需要通过 setArguments()进行设置,规则如下:


key 值为 params


value 为 json 格式


{    "params":[        {            "key":键,            "type":参数类型值,            "value":值        },        {                    }    ]}
复制代码


支持的参数类型列表



示例:


StageFragment fragment = new HiFragment();Bundle args = new Bundle();args.putString("params", "{\"params\":[{\"key\":\"path\",\"type\":10,\"value\":\"local\"}]}");fragment.setArguments(args);
复制代码

应用工程 Android 逻辑部分的 StageFragment

Fragment 需要继承 arkui_android_adapter.jar 包所提供的 StageFragment,StageFragment 主要功能是将 Android 中 Fragment 的生命周期与 OpenHarmony 中 UIAbility 的生命周期进行映射,例如:


package com.example.myapplication;import ohos.stage.ability.adapter.StageFragment;
public class HiFragment extends StageFragment { @Override protected void onCreate(Bundle savedInstanceState) { super.setInstanceName("com.example.myapplication:entry:EntryAbility:"); super.onCreate(savedInstanceState); }}
复制代码


为了将 Fragment 和 UIAbility 进行关联,需要重写 StageFragment 中的 onCreate 事件,在 super.onCreate(savedInstanceState)之前设置 instanceName,规则如下:


bundleName:moduleName:abilityName:
复制代码


其中 bundleName 的值来自于 OpenHarmony 应用中 app.json5 配置文件,moduleName、abilityName 的值来自于 OpenHarmony 应用中的 module.json5 配置文件。


发布于: 刚刚阅读数: 4
用户头像

龙儿筝

关注

还未添加个人签名 2024-10-27 加入

还未添加个人简介

评论

发布
暂无评论
ArkUI-X在Android上使用Fragment开发指南_龙儿筝_InfoQ写作社区