摘要:本文介绍将ArkUI框架的UIAbility跨平台部署至Android平台Fragment的使用说明,实现Android原生Fragment和ArkUI跨平台Fragment的混合开发,方便开发者灵活部署跨平台界面。
本文介绍将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文件示例如下:
如果当前StageFragment对应的UIAbility涉及页面跳转,Activity需要重写onBackPressed方法,以便在手机back键点击或手势侧滑时逐级返回页面,否则会退出跨平台承载的Activity页面。
@Override public void onBackPressed { if(fragment.onBackPressed) { super.onBackPressed; } }
参数传递
StageFragment支持传递参数,参数的传递需要通过setArguments进行设置,规则如下:
key值为params
value为json格式
{ "params":[ { "key":键, "type":参数类型值, "value":值 }, { } ] }
支持的参数类型列表
参数类型
参数类型值
boolean
1
5
double
9
string
10
示例:
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配置文件。
来源:龙儿筝