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间导航