fraction是鸿蒙里面一个类似Android的fragment的一个组件,具体如何使用可参考这篇文章https://blog.csdn.net/xq610928/article/details/114435014
Android中fragment是可以跳到Activity,鸿蒙的fraction也有类似的效果跳到Ability,实际上是跳到Page Ability的主AbilitySlice。鸿蒙的Ability分为三大类Page Ability、Service Ability、Data Ability,Page Ability是FA唯一支持的模板,用于提供与用户交互的能力,由一个或多个AbilitySlice组成。所以Fraction跳到Ability,实际上是跳到Ability默认的主路由上(AbilitySlice)。
下面介绍跳转到不同Page Ability(默认路由) 和相同Page Ability 的其他路由(AbilitySlice) 的方法:
一、跳转到不同的Page Ability:
创建一个Page Ability
Operation operation =
new Intent.OperationBuilder()
.withBundleName("包名")
.withAbilityName("类名")
.build();
intent.setOperation(operation);
以上代码即可从Fraction跳至不同Page Ability,打开的界面则是该Page Ability的默认路由的界面
若需跳到不同的Page Ability的副路由(AbilitySlice),则只需加入.withAction("action.detail")即可,action.detail为confi.json配置文件中所配置Action名称,具体步骤参看下面的操作。注意:Page Ability需要对应好,下面步骤1的name应该是需要跳转的Page Ability。
二、跳至与Fraction在同一个Page Ability中的AbilitySlice
跳转步骤如下:
1. 在config.json配置文件中配置
在actions中添加"action.detail" ,name为fraction所在的Page Ability
2. 在Ability(步骤1中name指向的Ability)的onStart方法中配置副路由,指向所需AbilitySlice
addActionRoute("action.detail", NewsdetailAbilitySlice.class.getName());
action.detail 为步骤1所配置的action名称,NewsdetailAbilitySlice.class.getName()则是需要跳转的AbilitySlice
3. 调用
Intent intent = new Intent();
Operation operation =
new Intent.OperationBuilder()
.withBundleName(getBundleName())
.withAbilityName(MainAbility.class.getName())
.withAction("action.detail")
.build();
intent.setOperation(operation);
.withAbilityName(MainAbility.class.getName())为所在的Page Ability
.withAction("action.detail")为步骤1配置的action名称
这样就可以实现fraction跳转AbilitySlice
补充:AbilitySlice如何关闭(finish)
直接调用terminate()方法,即可关闭AbilitySlice