更多内容请访问:与华为官方共建的鸿蒙技术社区https://harmonyos.51cto.com/#zz1。知道IntentIntent是对象之间传递信息的载体。比如当一个Ability需要启动另一个Ability,或者一个AbilitySlice需要导航到另一个AbilitySlice时,可以使用Intent指定启动目标并携带相关数据。Intent的组成元素包括Operation和Parameters:2.理解AbilitySlice的路由配置虽然一个Page可以包含多个AbilitySlice,但是Page进入前台时界面默认只显示一个AbilitySlice。默认显示的AbilitySlice由setMainRoute()方法指定。当有多个AbilitySlice需要显示时,可以通过addActionRoute()方法为MainAbilitySlice以外的AbilitySlice配置路由规则。此时,当其他Page实例希望导航到这些AbilitySlices时,可以通过在AbilitySlices之间跳转来显示这个页面。publicclassMyAbilityextendsAbility{@OverridepublicvoidonStart(Intentintent){super.onStart(intent);//setthemainroutesetMainRoute(MainSlice.class.getName());//settheactionrouteaddActionRoute("action.pay",PaySlice.class.getName());addActionRoute("action.scan",ScanSlice.class.getName());}}addActionRoute()方法中使用的action名称需要在应用配置文件(config.json)中注册:{"module":{"abilities":[{"skills":[{"actions":["action.pay","action.scan"]}]...}]...}...}3.在AbilitySlice1和AbilitySlice2之间同页面跳转(无参数,有参数,返回值)1)无参数跳转@OverridepublicvoidonStart(Intentintent){super.onStart(intent);super.setUIContent(ResourceTable.Layout_ability_main);Texttext=(Text)findComponentById(ResourceTable.id_text_helloworld);text.setClickedListener(component->{Intentintent1=newIntent();present(newMainAbilitySlice1(),intent1);});}2)带参数跳转(1)生成AbilitySlice@OverridepublicvoidonStart(Intentintent){super在参数端.onStart(意图);超级tUIContent(ResourceTable.Layout_ability_main);Texttext=(Text)findComponentById(ResourceTable.Id_text_helloworld);text.setClickedListener(component->{//有参数跳转Intentintent1=newIntent();intent1.setParam("user","钟发");present(newMainAbilitySlice1(),intent1);});}(2)接收参与数的AbilitySlicepublicclassMainAbilitySlice1extendsAbilitySlice{Texttext;StringoldText;@OverridepublicvoidonStart(Intentintent){super.onStart(intent);super.setUIContent(ResourceTable.Layout_ability_main1);text=(Text)findComponentById(ResourceTable.Id_text_helloworld1);if(intent!=null){Stringuser=intent.getStringParam("user");oldText=text.getText();text.append(","+user);}}@OverrideprotectedvoidonInactive(){super.onInactive();}....}3)带参数字跳转+返回值(1)参数字生成端publicclassMainAbilitySliceextendsAbilitySlice{@OverridepublicvoidonStart(Intentintent){super.onStart(intent);super.setUIContent(ResourceTable.Layout_ability_main);Texttext=(Text)findComponentById(ResourceTable.Id_text_helloworld);text.setClickedListener(component->{//有参数跳转Intentintent1=newIntent();intent1.setParam("user","Zhongfafa");presentForResult(newMainAbilitySlice1(),intent1,120);});}...}(2)参数接收者publicclassMainAbilitySlice1extendsAbilitySlice{Texttext;StringoldText;@OverridepublicvoidonStart(Intentintent){super.onStart(intent);super.setUIContent(ResourceTable.Layout_ability_main1);text=(Text)findComponentById(ResourceTable.id_text_helloworld1);if(intent!=null){Stringuser=intent.getStringParam("user");oldText=text.getText();text.setText(oldText+","+user);}//参数接收者为在Text上点击text.setClickedListener(component->{//1.返回值到重定向页面Intentintent1=newIntent();intent1.setParam("password","123456");setResult(intent1);//2.接收这个AbilityAlice,自动返回到上一页terminate();});}@OverrideprotectedvoidonInactive(){super.onInactive();text.setText(oldText);}...}(3)返回到参数生成端接收和返回值publicclassMainAbilitySliceextendsAbilitySlice{Texttext;@OverridepublicvoidonStart(Intentintent){super.onStart(intent);super.setUIContent(ResourceTable.Layout_ability_main);text=(Text)findComponentById(ResourceTable.Id_text_helloworld);text.setClickedListener(component->{//有parametersJumpIntentintent1=newIntent();intent1.setParam("user","Zhongfafa");presentForResult(newMainAbilitySlice1(),intent1,120);});}@OverrideprotectedvoidonResult(intrequestCode,IntentresultIntent){super.onResult(requestCode),resultIntent);if(requestCode==120){Stringpassword=resultIntent.getStringParam("password");text.setText("返回值:"+password);}}...}4.不同Page直接跳转,这是第一个鸿蒙应用实例,核心代码:if(button!=null){//设置按钮的点击回调button.setClickedListener(newComponent.ClickedListener(){@OverridepublicvoidonClick(Componentcomponent){IntensecondIntent=newIntent();//指定要启动的FA的bundleName和abilityNameOperationoperation=newIntent.OperationBuilder().withDeviceId("").withBundleName("com.example.myapplication").withAbilityName("com.example.myapplication.SecondAbility").build();secondIntent.setOperation(operation);startAbility(secondIntent);//通过AbilitySlice的startAbility接口启动另一个页面}});}5.Page1的MainAbilitySlice跳转到Page2的AbilitySlice1@OverridepublicvoidonStart(Intentintent){super.onStart(intent);super.setUIContent(ResourceTable.Layout_ability_main);text=(Text)findComponentById(ResourceTable.Id_text_helloworld);text.setClickedListener(component->{Intentintent1=newIntent();intent1.setAction("abilityslice1");//关键是在配置文件中配置action,在Ability中注册路由startAbility(intent1);});}文章内容已录制成视频课程《鸿蒙手机应用开发入门》https://edu.51cto.com/course/26133.html?版权归作者和HarmonyOS技术社区共同所有,如需转载请注明出处,否则将追究法律责任。更多信息,请vi坐:和华为官方共同建立的鸿蒙技术社区https://harmonyos.51cto.com/#zz
