从零开始学HarmonyOS之Ability(FA)或AbilitySlice之间跳转

1. Ability间的导航

    Page间的导航可以使用startAbility()或startAbilityForResult()方法,获得返回结果的回调为onAbilityResult()

    AbilityStartSetting:

      //指示“能力窗口大小”属性的名称。当页面功能处于ohos.aafwk.ability.AbilityWindowConfiguration.MULTI_WINDOW_DISPLAY_      FLOATING模式时,此属性生效。建议您在开始新任务时设置此属性

      public static final StringBOUNDS_KEY ="abilityBounds";

      //指示显示设备ID属性的名称。此属性用于显示另一设备上的某个能力的窗口显示,例如,将某个能力的窗口从当前设备投影到电视。

      public static final StringWINDOW_DISPLAY_ID_KEY ="windowId";

    //指示能力窗口显示模式属性的名称。异能的窗口显示模式可以是以下任意值:

    MULTI_WINDOW_DISPLAY_FULLSCREEN

    MULTI_WINDOW_DISPLAY_PRIMARY

    MULTI_WINDOW_DISPLAY_SECONDARY

    MULTI_WINDOW_DISPLAY_FLOATING

  public static final StringWINDOW_MODE_KEY ="windowMode";

下图中abilityName传入的时Ability的完整路径,

比如:ohos.samples.pageability.FirstAbility

通过在Ability中调用setResult()可以设置返回结果

获得返回结果的回调为onAbilityResult()

2.AbilitySlice间的导航


同一Page内是可以包含多个AbilitySlice的,那么他们之间如何进行导航

当发起导航的AbilitySlice和导航目标的AbilitySlice处于同一个Page时,您可以通过present()方法实现导航。

例如: present(new TargetSlice(), new Intent())

如果开发者希望在用户从导航目标AbilitySlice返回时,能够获得其返回结果,则应当使用presentForResult()实现导航。用户从导航目标AbilitySlice返回时,系统将回调onResult()来接收和处理返回结果,开发者需要重写该方法。返回结果由导航目标AbilitySlice在其生命周期内通过setResult()进行设置。

注:系统为每个Page维护了一个AbilitySlice实例的栈,每个进入前台的AbilitySlice实例均会入栈。当开发者在调用present()或presentForResult()时指定的AbilitySlice实例已经在栈中存在时,则栈中位于此实例之上的AbilitySlice均会出栈并终止其生命周期。前面的示例代码中,导航时指定的AbilitySlice实例均是新建的,即便重复执行此代码(此时作为导航目标的这些实例是同一个类),也不会导致任何AbilitySlice出栈。



引用官方地址:AbilitySlice间导航

你可能感兴趣的:(从零开始学HarmonyOS之Ability(FA)或AbilitySlice之间跳转)