AbilitySlice 间跳转
present
当发起的 AbilitySlice 和目标的 AbilitySlice 处于同一个 Page 时,您可以通过 present()方法实现跳转
界面一如图:点击跳转界面二并传递参数,AbilitySlice之前传参也通过Intent,如下代码所示:

public class MainAbilitySlice extends AbilitySlice {
@Override
public void onStart(Intent intent) {
super.onStart(intent);
super.setUIContent(ResourceTable.Layout_ability_main);
initView();
}
private void initView() {
Text text= (Text) findComponentById(ResourceTable.Id_text_helloworld);
text.setClickedListener(new Component.ClickedListener() {
@Override
public void onClick(Component component) {
AbilitySlice abilitySlice= new MainAbility2Slice();
Intent intent=new Intent();
intent.setParam("data","我是数据");
present(abilitySlice,intent);
}
});
}
@Override
public void onActive() {
super.onActive();
}
@Override
public void onForeground(Intent intent) {
super.onForeground(intent);
}
}
界面二,通过Intent接收参数,如下代码所示
public class MainAbility2Slice extends AbilitySlice {
@Override
public void onStart(Intent intent) {
super.onStart(intent);
super.setUIContent(ResourceTable.Layout_ability_main2);
String data = intent.getStringParam("data");
Text text = (Text) findComponentById(ResourceTable.Id_text_data);
text.setText(data);
}
@Override
public void onActive() {
super.onActive();
}
@Override
public void onForeground(Intent intent) {
super.onForeground(intent);
}
}

presentForResult
如果希望从目标 AbilitySlice 返回时,能够获得其返回结果,则应当使用 presentForResult()实现跳转。 onResult() 来接收和处理返回结果,返回结果由导航目标 AbilitySlice 在其生命周期内通过 setResult()进行设置。
示例:
1.AbilitySlice1界面,点击界面二,使用presentForResult跳转并带参数“我是数据”
2.AbilitySlice2界面,获取“我是数据”,点击返回界面一,调用setResult,传参数“返回参数”
3.AbilitySlice1界面,重写onResult方法,获取返回参数
如图所示:

package com.example.myapplication.slice;
import com.example.myapplication.ResourceTable;
import ohos.aafwk.ability.AbilitySlice;
import ohos.aafwk.content.Intent;
import ohos.agp.components.Component;
import ohos.agp.components.Text;
public class MainAbilitySlice extends AbilitySlice {
private Text result;
@Override
public void onStart(Intent intent) {
super.onStart(intent);
super.setUIContent(ResourceTable.Layout_ability_main);
initView();
}
private void initView() {
Text text = (Text) findComponentById(ResourceTable.Id_text_helloworld);
result = (Text) findComponentById(ResourceTable.Id_text_result);
text.setClickedListener(new Component.ClickedListener() {
@Override
public void onClick(Component component) {
AbilitySlice abilitySlice = new MainAbility2Slice();
Intent intent = new Intent();
intent.setParam("data", "我是数据");
presentForResult(abilitySlice, intent, 100);
}
});
}
@Override
protected void onResult(int requestCode, Intent resultIntent) {
super.onResult(requestCode, resultIntent);
if (requestCode == 100) {
if (resultIntent == null) {
return;
}
String back_data = resultIntent.getStringParam("back_data");
result.setText(back_data);
}
}
@Override
public void onActive() {
super.onActive();
}
@Override
public void onForeground(Intent intent) {
super.onForeground(intent);
}
}

package com.example.myapplication.slice;
import com.example.myapplication.ResourceTable;
import ohos.aafwk.ability.AbilitySlice;
import ohos.aafwk.content.Intent;
import ohos.aafwk.content.IntentParams;
import ohos.agp.components.Component;
import ohos.agp.components.Text;
public class MainAbility2Slice extends AbilitySlice {
@Override
publ

本文介绍了在HarmonyOS中如何在AbilitySlice之间进行跳转,包括在同一Page内的present方法跳转,使用presentForResult进行有结果返回的跳转,以及在不同Page间使用startAbility和startAbilityForResult的方法。详细阐述了Intent参数传递、结果接收和处理的实现过程,展示了具体代码示例。
9576

被折叠的 条评论
为什么被折叠?



