zoukankan      html  css  js  c++  java
  • 鸿蒙开发基础(三)跳转、传值及回传值

    Slice之间的跳转

    present(new MainAbilitySlice2(), intent1);
    

    传值

    Slice1:

    text.setText("Hello World1");
    text.setClickedListener(new Component.ClickedListener() {
        @Override
        public void onClick(Component component) {
            Intent intent1 = new Intent();
            intent1.setParam("user", "cnyl");
            present(new MainAbilitySlice2(), intent1);
        }
    });
    
    

    Slice2:

    String user = "";
    if (intent!=null){
        user = intent.getStringParam("user");
    }
    text.setText("Hello World2" + user);
    

    回传值

    MainAbilitySlice

    public class MainAbilitySlice extends AbilitySlice {
    
        private DirectionalLayout myLayout = new DirectionalLayout(this);
        Text text;
    
        @Override
        public void onStart(Intent intent) {
            super.onStart(intent);
            LayoutConfig config = new LayoutConfig(LayoutConfig.MATCH_PARENT, LayoutConfig.MATCH_PARENT);
            myLayout.setLayoutConfig(config);
            ShapeElement element = new ShapeElement();
            element.setRgbColor(new RgbColor(255, 255, 255));
            myLayout.setBackground(element);
    
            text = new Text(this);
            text.setLayoutConfig(config);
            text.setText("这是S1");
            text.setTextColor(new Color(0xFF000000));
            text.setTextSize(50);
            text.setTextAlignment(TextAlignment.CENTER);
            text.setClickedListener(new Component.ClickedListener() {
                @Override
                public void onClick(Component component) {
                    Intent intent1 = new Intent();
                    intent1.setParam("user", "cnyl");
                    presentForResult(new MainAbilitySlice2(), intent1,123);
                }
            });
            myLayout.addComponent(text);
            super.setUIContent(myLayout);
        }
    
        @Override
        protected void onResult(int requestCode, Intent resultIntent) {     //在接到结果的时候会调用
            super.onResult(requestCode, resultIntent);
            if(requestCode==123){
                String pwd = resultIntent.getStringParam("pwd");
                text.setText("回到S1收到了来自S2的pwd:" + pwd);
            }
        }
    
        @Override
        public void onActive() {
            super.onActive();
        }
    
        @Override
        public void onForeground(Intent intent) {
            super.onForeground(intent);
        }
    }
    
    

    MainAbilitySlice2

    public class MainAbilitySlice2 extends AbilitySlice {
    
        private DirectionalLayout myLayout = new DirectionalLayout(this);
    
        @Override
        public void onStart(Intent intent) {
            super.onStart(intent);
            LayoutConfig config = new LayoutConfig(LayoutConfig.MATCH_PARENT, LayoutConfig.MATCH_PARENT);
            myLayout.setLayoutConfig(config);
            ShapeElement element = new ShapeElement();
            element.setRgbColor(new RgbColor(255, 255, 255));
            myLayout.setBackground(element);
    
            String user = "";
            if (intent!=null){
                user = intent.getStringParam("user");
            }
    
            Text text = new Text(this);
            text.setLayoutConfig(config);
            text.setText("在S2收到了来自S1的user:" + user);
            text.setTextColor(new Color(0xFF000000));
            text.setTextSize(50);
            text.setTextAlignment(TextAlignment.CENTER);
            text.setClickedListener(new Component.ClickedListener() {
                @Override
                public void onClick(Component component) {
                    Intent intent1 = new Intent();
                    intent1.setParam("pwd", "123456");
                    setResult(intent1);
                    terminate();
                }
            });
            myLayout.addComponent(text);
            super.setUIContent(myLayout);
        }
    
        @Override
        public void onActive() {
            super.onActive();
        }
    
        @Override
        public void onForeground(Intent intent) {
            super.onForeground(intent);
        }
    }
    
    

    Ability之间的跳转

    MainAbilitySlice

    public class MainAbilitySlice extends AbilitySlice {
    
        private DirectionalLayout myLayout = new DirectionalLayout(this);
    
        @Override
        public void onStart(Intent intent) {
            super.onStart(intent);
            LayoutConfig config = new LayoutConfig(LayoutConfig.MATCH_PARENT, LayoutConfig.MATCH_PARENT);
            myLayout.setLayoutConfig(config);
            ShapeElement element = new ShapeElement();
            element.setRgbColor(new RgbColor(255, 255, 255));
            myLayout.setBackground(element);
    
            Text text = new Text(this);
            text.setLayoutConfig(config);
            text.setText("Hello World1");
            text.setTextColor(new Color(0xFF000000));
            text.setTextSize(150);
            text.setTextAlignment(TextAlignment.CENTER);
            text.setClickedListener(new Component.ClickedListener() {
                @Override
                public void onClick(Component component) {
                    Intent intent = new Intent();
    
                // 通过Intent中的OperationBuilder类构造operation对象,指定设备标识(空串表示当前设备)、应用包名、Ability名称
                    Operation operation = new Intent.OperationBuilder()
                            .withDeviceId("")
                            .withBundleName("com.example.test")
                            .withAbilityName("com.example.test.CNYLAbility")
                            .build();
    
                // 把operation设置到intent中
                    intent.setOperation(operation);
                    startAbility(intent);
                }
            });
            myLayout.addComponent(text);
            super.setUIContent(myLayout);
        }
    
        @Override
        public void onActive() {
            super.onActive();
        }
    
        @Override
        public void onForeground(Intent intent) {
            super.onForeground(intent);
        }
    }
    

    CNYLAbilitySlice

    可以简化

    Intent intent = new Intent();
    Operation operation = new Intent.OperationBuilder()
        .withBundleName("com.example.test")
        .withAbilityName(".CNYLAbility")
        .build();
    intent.setOperation(operation);
    startAbility(intent);
    

    跳转到另一个Ability中,指定的Slice

    MainAbilitySlice

    public class MainAbilitySlice extends AbilitySlice {
    
        private DirectionalLayout myLayout = new DirectionalLayout(this);
    
        @Override
        public void onStart(Intent intent) {
            super.onStart(intent);
            LayoutConfig config = new LayoutConfig(LayoutConfig.MATCH_PARENT, LayoutConfig.MATCH_PARENT);
            myLayout.setLayoutConfig(config);
            ShapeElement element = new ShapeElement();
            element.setRgbColor(new RgbColor(255, 255, 255));
            myLayout.setBackground(element);
    
            Text text = new Text(this);
            text.setLayoutConfig(config);
            text.setText("Hello World1");
            text.setTextColor(new Color(0xFF000000));
            text.setTextSize(150);
            text.setTextAlignment(TextAlignment.CENTER);
            text.setClickedListener(new Component.ClickedListener() {
                @Override
                public void onClick(Component component) {
                    Intent intent = new Intent();
                    intent.setAction("cnyl");
                    startAbility(intent);
                }
            });
            myLayout.addComponent(text);
            super.setUIContent(myLayout);
        }
    
        @Override
        public void onActive() {
            super.onActive();
        }
    
        @Override
        public void onForeground(Intent intent) {
            super.onForeground(intent);
        }
    }
    
    

    config.json

        "abilities": [
          {
            "skills": [
              {
                "entities": [
                  "entity.system.home"
                ],
                "actions": [
                  "action.system.home"
                ]
              }
            ],
            "orientation": "landscape",
            "formEnabled": false,
            "name": "com.example.test6.MainAbility",
            "icon": "$media:icon",
            "description": "$string:mainability_description",
            "label": "Test6",
            "type": "page",
            "launchType": "standard"
          },
          {
            "skills": [
              {
                "actions": [
                  "cnyl"
                ]
              }
            ],
            "orientation": "landscape",
            "formEnabled": false,
            "name": "com.example.test6.CNYLAbility",
            "icon": "$media:icon",
            "description": "$string:cnylability_description",
            "label": "entry",
            "type": "page",
            "launchType": "standard"
          }
        ]
    

    CNYLAbility

    public class CNYLAbility extends Ability {
        @Override
        public void onStart(Intent intent) {
            super.onStart(intent);
            super.setMainRoute(CNYLAbilitySlice.class.getName());
    
            addActionRoute("cnyl", "com.example.test6.slice.CNYLAbilitySlice2");
        }
    }
    
    

    Copy Reference --> "com.example.test6.slice.CNYLAbilitySlice2"
    MainAbilitySlice > config.json > CNYLAbility > CNYLAbilitySlice2

  • 相关阅读:
    IntelliJ IDEA隐藏不想看到的文件或文件夹
    IntelliJ IDEA更改字体和大小
    Dubbo实践(一)入门示例
    部署Jar包到远程Maven仓库
    Linux网卡别名
    ORACLE NLS_LENGTH_SEMANTICS 参数的用途
    Oracle编辑数据时提示:这些查询结果不可更新,请使用ROWI或者SELECT……FOR UPDATE获得可更新结果
    Notepad++格式化JSON字符串
    Xshell配色为Ubuntu风格
    【剑指offer】判断一个序列是否是二叉搜索树的后序遍历,C++实现
  • 原文地址:https://www.cnblogs.com/cnyl/p/13888409.html
Copyright © 2011-2022 走看看