成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

鴻蒙應(yīng)用開發(fā)入門(六):頁面間跳轉(zhuǎn)

系統(tǒng)
文章由鴻蒙社區(qū)產(chǎn)出,想要了解更多內(nèi)容請前往:51CTO和華為官方戰(zhàn)略合作共建的鴻蒙技術(shù)社區(qū)https://harmonyos.51cto.com/#zz

 [[373779]]

想了解更多內(nèi)容,請?jiān)L問:

51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)

https://harmonyos.51cto.com/#zz

1. 認(rèn)識Intent

Intent是對象之間傳遞信息的載體。

例如,當(dāng)一個Ability需要啟動另一個Ability時,或者一個AbilitySlice需要導(dǎo)航到另一個AbilitySlice時,可以通過Intent指定啟動的目標(biāo)同時攜帶相關(guān)數(shù)據(jù)。Intent的構(gòu)成元素包括Operation與Parameters:

2. 了解AbilitySlice路由配置

雖然一個Page可以包含多個AbilitySlice,但是Page進(jìn)入前臺時界面默認(rèn)只展示一個AbilitySlice。默認(rèn)展示的AbilitySlice是通過setMainRoute()方法來指定的。當(dāng)有多個需要展示的AbilitySlice,可以通過addActionRoute()方法為MainAbilitySlice以外的AbilitySlice配置路由規(guī)則。此時,當(dāng)其他Page實(shí)例期望導(dǎo)航到這些AbilitySlice時,可以通過AbilitySlice之間的跳轉(zhuǎn),顯示出這張頁面。

  1. public class MyAbility extends Ability { 
  2.  
  3. @Override 
  4.  
  5. public void onStart(Intent intent) { 
  6.  
  7. super.onStart(intent); 
  8.  
  9. // set the main route 
  10.  
  11. setMainRoute(MainSlice.class.getName()); 
  12.  
  13. // set the action route 
  14.  
  15. addActionRoute("action.pay", PaySlice.class.getName()); 
  16.  
  17. addActionRoute("action.scan", ScanSlice.class.getName()); 
  18.  
  19.  

 addActionRoute()方法中使用的動作命名,需要在應(yīng)用配置文件(config.json)中注冊:

  1.  
  2. "module": { 
  3.  
  4. "abilities": [ 
  5.  
  6.  
  7. "skills":[ 
  8.  
  9.  
  10. "actions":[ 
  11.  
  12. "action.pay"
  13.  
  14. "action.scan" 
  15.  
  16.  
  17.  
  18.  
  19. ... 
  20.  
  21.  
  22.  
  23. ... 
  24.  
  25.  
  26. ... 
  27.  

 3. 同一個Page里的AbilitySlice1與AbilitySlice2間的跳轉(zhuǎn)(無參,帶參,回值)

1)無參數(shù)跳轉(zhuǎn)

  1. @Override 
  2.  
  3. public void onStart(Intent intent) { 
  4.  
  5. super.onStart(intent); 
  6.  
  7. super.setUIContent(ResourceTable.Layout_ability_main); 
  8.  
  9. Text text = (Text)findComponentById(ResourceTable.Id_text_helloworld); 
  10.  
  11. text.setClickedListener(component->{ 
  12.  
  13. Intent intent1 = new Intent(); 
  14.  
  15. present(new MainAbilitySlice1(),intent1); 
  16.  
  17. }); 
  18.  

 2)帶參數(shù)跳轉(zhuǎn)

(1)產(chǎn)生參數(shù)端的AbilitySlice

  1. @Override 
  2.  
  3. public void onStart(Intent intent) { 
  4.  
  5. super.onStart(intent); 
  6.  
  7. super.setUIContent(ResourceTable.Layout_ability_main); 
  8.  
  9. Text text = (Text)findComponentById(ResourceTable.Id_text_helloworld); 
  10.  
  11. text.setClickedListener(component->{ 
  12.  
  13. //有參數(shù)跳轉(zhuǎn) 
  14.  
  15. Intent intent1 = new Intent(); 
  16.  
  17. intent1.setParam("user","鐘發(fā)發(fā)"); 
  18.  
  19. present(new MainAbilitySlice1(),intent1); 
  20.  
  21. }); 
  22.  

 (2)接收參數(shù)端的AbilitySlice

  1. public class MainAbilitySlice1 extends AbilitySlice { 
  2.  
  3. Text text; 
  4.  
  5. String oldText; 
  6.  
  7. @Override 
  8.  
  9. public void onStart(Intent intent) { 
  10.  
  11. super.onStart(intent); 
  12.  
  13. super.setUIContent(ResourceTable.Layout_ability_main1); 
  14.  
  15. text = (Text) findComponentById(ResourceTable.Id_text_helloworld1); 
  16.  
  17. if(intent != null){ 
  18.  
  19. String user = intent.getStringParam("user"); 
  20.  
  21. oldText = text.getText(); 
  22.  
  23. text.append("," + user); 
  24.  
  25.  
  26.  
  27. @Override 
  28.  
  29. protected void onInactive() { 
  30.  
  31. super.onInactive(); 
  32.  
  33.  
  34. .... 
  35.  

 3)帶參數(shù)跳轉(zhuǎn)+返回值

(1)參數(shù)產(chǎn)生端

  1. public class MainAbilitySlice extends AbilitySlice { 
  2.  
  3. @Override 
  4.  
  5. public void onStart(Intent intent) { 
  6.  
  7. super.onStart(intent); 
  8.  
  9. super.setUIContent(ResourceTable.Layout_ability_main); 
  10.  
  11. Text text = (Text)findComponentById(ResourceTable.Id_text_helloworld); 
  12.  
  13. text.setClickedListener(component->{ 
  14.  
  15. //有參數(shù)跳轉(zhuǎn) 
  16.  
  17. Intent intent1 = new Intent(); 
  18.  
  19. intent1.setParam("user","鐘發(fā)發(fā)"); 
  20.  
  21. presentForResult(new MainAbilitySlice1(),intent1,120); 
  22.  
  23. }); 
  24.  
  25.  
  26. ... 
  27.  

 (2)參數(shù)接收端

  1. public class MainAbilitySlice1 extends AbilitySlice { 
  2.  
  3. Text text; 
  4.  
  5. String oldText; 
  6.  
  7. @Override 
  8.  
  9. public void onStart(Intent intent) { 
  10.  
  11. super.onStart(intent); 
  12.  
  13. super.setUIContent(ResourceTable.Layout_ability_main1); 
  14.  
  15. text = (Text) findComponentById(ResourceTable.Id_text_helloworld1); 
  16.  
  17. if(intent != null){ 
  18.  
  19. String user = intent.getStringParam("user"); 
  20.  
  21. oldText = text.getText(); 
  22.  
  23. text.setText(oldText + "," + user); 
  24.  
  25.  
  26. //參數(shù)接收端在對文字點(diǎn)擊 
  27.  
  28. text.setClickedListener(component -> { 
  29.  
  30. //1.給跳轉(zhuǎn)來的頁面返回值 
  31.  
  32. Intent intent1 = new Intent(); 
  33.  
  34. intent1.setParam("password","123456"); 
  35.  
  36. setResult(intent1); 
  37.  
  38. //2.接收本AbilityAlice,自動返回上一頁 
  39.  
  40. terminate(); 
  41.  
  42. }); 
  43.  
  44.  
  45. @Override 
  46.  
  47. protected void onInactive() { 
  48.  
  49. super.onInactive(); 
  50.  
  51. text.setText(oldText); 
  52.  
  53.  
  54. ... 
  55.  

 (3)回到參數(shù)產(chǎn)生端接收返回值

  1. public class MainAbilitySlice extends AbilitySlice { 
  2.  
  3. Text text; 
  4.  
  5. @Override 
  6.  
  7. public void onStart(Intent intent) { 
  8.  
  9. super.onStart(intent); 
  10.  
  11. super.setUIContent(ResourceTable.Layout_ability_main); 
  12.  
  13. text = (Text)findComponentById(ResourceTable.Id_text_helloworld); 
  14.  
  15. text.setClickedListener(component->{ 
  16.  
  17. //有參數(shù)跳轉(zhuǎn) 
  18.  
  19. Intent intent1 = new Intent(); 
  20.  
  21. intent1.setParam("user","鐘發(fā)發(fā)"); 
  22.  
  23. presentForResult(new MainAbilitySlice1(),intent1,120); 
  24.  
  25. }); 
  26.  
  27.  
  28. @Override 
  29.  
  30. protected void onResult(int requestCode, Intent resultIntent) { 
  31.  
  32. super.onResult(requestCode, resultIntent); 
  33.  
  34. if(requestCode==120){ 
  35.  
  36. String password = resultIntent.getStringParam("password"); 
  37.  
  38. text.setText("返回值:" + password); 
  39.  
  40.  
  41.  
  42. ... 
  43.  

 4. 不同的Page直接跳轉(zhuǎn),第一個鴻蒙應(yīng)用例子寫的就是這個,核心代碼:

  1. if (button != null) { 
  2.  
  3. // 為按鈕設(shè)置點(diǎn)擊回調(diào) 
  4.  
  5. button.setClickedListener(new Component.ClickedListener() { 
  6.  
  7. @Override 
  8.  
  9. public void onClick(Component component) { 
  10.  
  11. Intent secondIntent = new Intent(); 
  12.  
  13. // 指定待啟動FA的bundleName和abilityName 
  14.  
  15. Operation operation = new Intent.OperationBuilder() 
  16.  
  17. .withDeviceId(""
  18.  
  19. .withBundleName("com.example.myapplication"
  20.  
  21. .withAbilityName("com.example.myapplication.SecondAbility"
  22.  
  23. .build(); 
  24.  
  25. secondIntent.setOperation(operation); 
  26.  
  27. startAbility(secondIntent); // 通過AbilitySlice的startAbility接口實(shí)現(xiàn)啟動另一個頁面 
  28.  
  29.  
  30. }); 
  31.  

 5. Page1的MainAbilitySlice跳轉(zhuǎn)Page2的AbilitySlice1

  1. @Override 
  2.  
  3. public void onStart(Intent intent) { 
  4.  
  5. super.onStart(intent); 
  6.  
  7. super.setUIContent(ResourceTable.Layout_ability_main); 
  8.  
  9. text = (Text)findComponentById(ResourceTable.Id_text_helloworld); 
  10.  
  11. text.setClickedListener(component->{ 
  12.  
  13. Intent intent1 = new Intent(); 
  14.  
  15. intent1.setAction("abilityslice1"); //關(guān)鍵是配置文件里配置action和Ability里注冊路由 
  16.  
  17. startAbility(intent1); 
  18.  
  19. }); 
  20.  

 文章內(nèi)容已錄制成視頻課程《鴻蒙手機(jī)應(yīng)用開發(fā)入門》https://edu.51cto.com/course/26133.html

©著作權(quán)歸作者和HarmonyOS技術(shù)社區(qū)共同所有,如需轉(zhuǎn)載,請注明出處,否則將追究法律責(zé)任

想了解更多內(nèi)容,請?jiān)L問:

51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)

https://harmonyos.51cto.com/#zz

 

責(zé)任編輯:jianghua 來源: 鴻蒙社區(qū)
相關(guān)推薦

2021-09-18 14:45:26

鴻蒙HarmonyOS應(yīng)用

2024-05-21 08:04:50

ArkTS鴻蒙應(yīng)用開發(fā)語言

2010-05-11 16:55:12

Windows Pho

2023-07-31 17:35:31

ArkTS鴻蒙

2023-08-04 15:00:43

ArkTS語言鴻蒙

2024-01-03 15:31:16

網(wǎng)格布局ArkTSGrid

2020-12-25 10:52:28

鴻蒙HarmonyOS應(yīng)用開發(fā)

2020-11-09 11:56:49

HarmonyOS

2021-01-25 09:58:01

鴻蒙HarmonyOS應(yīng)用開發(fā)

2022-11-04 14:58:59

應(yīng)用開發(fā)鴻蒙

2020-12-24 12:01:16

鴻蒙HarmonyOS應(yīng)用開發(fā)

2015-05-05 10:51:32

php頁面跳轉(zhuǎn)方法

2013-09-13 13:16:05

2022-03-15 08:00:00

Flutter開發(fā)工具

2024-01-03 08:22:32

移動應(yīng)用頁面跳轉(zhuǎn)

2010-09-02 10:38:12

WidgetAndroid

2021-01-06 11:21:56

鴻蒙HarmonyOS應(yīng)用開發(fā)

2012-06-07 09:33:13

Windows Pho

2009-03-11 13:18:57

Android入門Android開發(fā)Android模擬器

2011-08-15 13:50:06

IPhone開發(fā)UIView動畫
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 日韩第一区 | 成人一区av偷拍 | 一级特黄色毛片 | 日韩精品在线观看视频 | 一区二区三区四区在线免费观看 | www四虎影视 | aaaaaa大片免费看最大的 | 草久在线 | 99一级毛片| 欧美综合色 | 欧美成人激情 | 亚洲黄色一级毛片 | 国产99精品 | 啪啪免费 | 人人射人人 | 亚洲一区中文字幕 | 美女黄色在线观看 | 成年无码av片在线 | 亚洲免费在线观看 | 国产综合欧美 | 亚洲国产aⅴ成人精品无吗 国产精品永久在线观看 | www.狠狠干 | 国产乱码精品一区二区三区av | 伊人二区 | 欧美一级免费片 | 99亚洲精品 | 欧美日韩专区 | 99精品国产一区二区青青牛奶 | 久久久久黄 | 国产在视频一区二区三区吞精 | 99国内精品久久久久久久 | 男人的天堂在线视频 | 久久国产精品一区 | 亚洲看片网站 | 视频二区 | 视频1区2区| 最近最新中文字幕 | 一区二区亚洲 | 精品久久久久久久 | 欧美一区在线看 | 五月天婷婷狠狠 |