自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

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

 [[373779]]

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

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

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

1. 認(rèn)識(shí)Intent

Intent是對(duì)象之間傳遞信息的載體。

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

2. 了解AbilitySlice路由配置

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

  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()方法中使用的動(dòng)作命名,需要在應(yīng)用配置文件(config.json)中注冊(cè):

  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. 同一個(gè)Page里的AbilitySlice1與AbilitySlice2間的跳轉(zhuǎn)(無(wú)參,帶參,回值)

1)無(wú)參數(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ù)接收端在對(duì)文字點(diǎn)擊 
  27.  
  28. text.setClickedListener(component -> { 
  29.  
  30. //1.給跳轉(zhuǎn)來(lái)的頁(yè)面返回值 
  31.  
  32. Intent intent1 = new Intent(); 
  33.  
  34. intent1.setParam("password","123456"); 
  35.  
  36. setResult(intent1); 
  37.  
  38. //2.接收本AbilityAlice,自動(dòng)返回上一頁(yè) 
  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),第一個(gè)鴻蒙應(yīng)用例子寫的就是這個(gè),核心代碼:

  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. // 指定待啟動(dòng)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); // 通過(guò)AbilitySlice的startAbility接口實(shí)現(xiàn)啟動(dòng)另一個(gè)頁(yè)面 
  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里注冊(cè)路由 
  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)載,請(qǐng)注明出處,否則將追究法律責(zé)任

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

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

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

 

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

2021-09-18 14:45:26

鴻蒙HarmonyOS應(yīng)用

2010-05-11 16:55:12

Windows Pho

2024-05-21 08:04:50

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

2023-07-31 17:35:31

ArkTS鴻蒙

2023-08-04 15:00:43

ArkTS語(yǔ)言鴻蒙

2020-12-25 10:52:28

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

2021-01-25 09:58:01

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

2024-01-03 15:31:16

網(wǎng)格布局ArkTSGrid

2015-05-05 10:51:32

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

2020-12-24 12:01:16

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

2024-01-03 08:22:32

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

2020-11-09 11:56:49

HarmonyOS

2021-06-22 16:40:32

鴻蒙HarmonyOS應(yīng)用

2013-09-13 13:16:05

2022-03-15 08:00:00

Flutter開發(fā)工具

2022-11-04 14:58:59

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

2021-01-06 11:21:56

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

2012-06-07 09:33:13

Windows Pho

2010-09-02 10:38:12

WidgetAndroid

2011-08-15 13:50:06

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

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