Intent数据传递(双向) 原创

发布于 2021-5-27 21:05
浏览
1收藏

单向双向的图解可以在单向数据传递中查看 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、启动项目

Intent数据传递(双向)-开源基础软件社区

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

Intent数据传递(双向)-开源基础软件社区

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

Intent数据传递(双向)-开源基础软件社区

此时在MainAbilitySlice的onResult()函数已经获取到信息 并且打印到HILOG中

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
标签
已于2021-5-28 12:00:09修改
3
收藏 1
回复
举报
回复
添加资源
添加资源将有机会获得更多曝光,你也可以直接关联已上传资源 去关联
    相关推荐