Intent数据传递(双向)
3077 浏览 22 点赞 18 收藏
单向双向的图解可以在单向数据传递中查看 https://harmonyos.51cto.com/posts/4824
展示MainAbilitySlice的具体代码
public class MainAbilitySlice extends AbilitySlice {
HiLogLabel label =new HiLogLabel(HiLog.LOG_APP,0xFFFFF,"CHXI");
@Override
public void onStart(Intent intent) {
super.setUIContent(ResourceTable.Layout_ability_main);
Button button = (Button) findComponentById(ResourceTable.Id_button);
button.setClickedListener(new Component.ClickedListener() {
@Override
public void onClick(Component component) {
//希望SecondSlice返回结果 使用presentForResult('目标页面',intent,请求码(自定义))
presentForResult(new SecondAbilitySlice(),intent,99);
}
});
}
@Override
protected void onResult(int requestCode, Intent resultIntent) {
HiLog.info(label, " 请求码---->" + requestCode);
String secondStr = resultIntent.getStringParam("second");
HiLog.info(label, " Second返回的数据---->" + secondStr);
}
}
public class SecondAbilitySlice extends AbilitySlice {
HiLogLabel label = new HiLogLabel(HiLog.LOG_APP,0xFFFFF,"CHXI29");
@Override
public void onStart(Intent intent) {
super.onStart(intent);
// 声明布局
DependentLayout myLayout = new DependentLayout(this);
// 设置布局宽高
myLayout.setWidth(DependentLayout.LayoutConfig.MATCH_PARENT);
myLayout.setHeight(DependentLayout.LayoutConfig.MATCH_PARENT);
// 设置布局背景为白色
ShapeElement background = new ShapeElement();
background.setRgbColor(new RgbColor(255, 255, 255));
myLayout.setBackground(background);
// 创建一个文本
Text text = new Text(this);
text.setText("Hi there ~");
text.setWidth(DependentLayout.LayoutConfig.MATCH_PARENT);
text.setTextSize(70);
text.setTextColor(Color.BLACK);
//设置按钮背景色
ShapeElement backgroundbutton = new ShapeElement();
backgroundbutton.setRgbColor(new RgbColor(0,200,200));
//创建一个buttonon
Button button = new Button(this);
button.setBackground(backgroundbutton);
button.setText("按钮");
button.setTextSize(100, Text.TextSizeType.PX);
//添加单击事件
/* button.setClickedListener(new Component.ClickedListener() {
@Override
public void onClick(Component component) {
//根据key获取myIntent里面value 并展示到text中
String str = intent.getStringParam("CHXI");
text.setText(str);
}
});
*/
// 设置文本的布局
DependentLayout.LayoutConfig textConfig = new DependentLayout.LayoutConfig(DependentLayout.LayoutConfig.MATCH_CONTENT, DependentLayout.LayoutConfig.MATCH_CONTENT);
textConfig.addRule(DependentLayout.LayoutConfig.CENTER_IN_PARENT);
DependentLayout.LayoutConfig butconfig = new DependentLayout.LayoutConfig(DependentLayout.LayoutConfig.MATCH_CONTENT,DependentLayout.LayoutConfig.MATCH_CONTENT);
text.setLayoutConfig(textConfig);
//设置按钮布局
butconfig.setMarginLeft(100);
butconfig.setMarginTop(1300);
button.setLayoutConfig(butconfig);
myLayout.addComponent(button);
myLayout.addComponent(text);
/*双向传递核心代码*/
//创建一个Intent 并返回给MainAbility
Intent secondIntent = new Intent();
secondIntent.setParam("second","two");
setResult(secondIntent);
super.setUIContent(myLayout);
}
}
案例演示结果
1、启动项目

2、点击【Next】跳转到SecondAbilitySlice页面

3、此时点击下方的【返回键】 注意:是屏幕底下的三角符号

此时在MainAbilitySlice的onResult()函数已经获取到信息 并且打印到HILOG中
©本站发布的所有内容,包括但不限于文字、图片、音频、视频、图表、标志、标识、广告、商标、商号、域名、软件、程序等,除特别标明外,均来源于网络或用户投稿,版权归原作者或原出处所有。我们致力于保护原作者版权,若涉及版权问题,请及时联系我们进行处理。
分类
HarmonyOS
标签
Intent数据传递
相关推荐
鸿蒙加密存储开发:数据安全保护的完整方案
周正
2008
0同样使用@State装饰器,有时第三层数据可以更新UI,有时不可以,是什么原因?
鸿蒙小助手
5332
0使用 @Builder数据刷新后UI没有刷新,导致图片错乱怎么解决?
鸿蒙小助手
7383
0@ObservedV2和@Trace装饰的单例class数据,修改后为什么UI不更新?
鸿蒙小助手
1643
0宋你一朵小红花
我还没有写个人简介......
881
帖子
0
提问
1679
粉丝
最新发布
华为鸿蒙 HarmonyOS 6.0.0.108 SP2 Developer 版本新增 9 套桌面图标
2025-10-20 23:17:16 发布注意!华为开启鸿蒙6.0系统推送,稳定性提升
2025-10-14 15:10:36 发布热门推荐