当前位置:   article > 正文

HarmonyOS(鸿蒙)应用程序框架入口-Ability_router.push("/pages/aboutpage")

router.push("/pages/aboutpage")

主要学习什么是Ability,Ability内的页面创建,页面间的跳转和数据传递以及Ability的生命周期。

什么是Ability

 Ability是一种包含用户界面的应用组件,主要用于和用户来进行交互。如下图,看到的图库应用和备忘录应用均是基于Ability实现的应用实例,任务列表中的应用任务也都是基于Ability实现的应用实例。

 每一个Ability实例都对应一个最近任务列表中的任务,Ability作为系统调度的单元提供窗口用于绘制。一个应用可以有一个或多个Ability。官网建议将一个独立的功能模块放到同一个Ability中。例如浏览器应用可以通过一个Ability结合多页面的形式让用户进行搜索和浏览内容;而聊天应用增加外面功能的场景,则可以将聊天应用中外卖功能的内容独立为一个Ability,当用户打开聊天应用的外卖功能查看外卖的订单详情时,此时有新的聊天消息,就可以通过最近任务列表切换回到聊天窗口来继续进行聊天对话。一个Ability可以对应多个页面,例如新闻应用在浏览内容时可以进行多页面的跳转。

Ability内的页面创建

工程默认创建的入口页面,以及新建页面操作如下图:

  

 页面间的跳转和数据传递

 1.导入router路由模块,主要命名空间,是ohos的,不是system

import router from '@ohos.router';

 2.通过router.push()方法实现将url指定为需要跳转的About页面路径

  1. import router from '@ohos.router';
  2. let paramsTest: string = '传参测试'
  3. @Entry
  4. @Component
  5. struct SecondPage {
  6. @State message: string = 'Hello World'
  7. build() {
  8. Row() {
  9. Column() {
  10. Text(this.message)
  11. .fontSize(50)
  12. .fontWeight(FontWeight.Bold)
  13. Button('Next')
  14. .onClick(()=>{
  15. router.push({
  16. url:'pages/AboutPage',
  17. params:{
  18. pTest:paramsTest,
  19. }
  20. })
  21. })
  22. }
  23. .width('100%')
  24. }
  25. .height('100%')
  26. }
  27. }

实现效果如下:

 

 AboutPage接收SecondPage传递过来的参数:

1.同样需要导入router

import router from '@ohos.router';

 2.使用router.getParams()方法获取参数

  1. import router from '@ohos.router';
  2. @Entry
  3. @Component
  4. struct AboutPage {
  5. @State message: string = 'AboutPage'
  6. @State msg:string = router.getParams()?.['pTest']
  7. build() {
  8. Row() {
  9. Column() {
  10. Text(this.message)
  11. .fontSize(50)
  12. .fontWeight(FontWeight.Bold)
  13. Text(this.msg)
  14. .fontSize(20)
  15. }
  16. .width('100%')
  17. }
  18. .height('100%')
  19. }
  20. }

使用router.back可以用来返回到上一个页面

  1. import router from '@ohos.router';
  2. @Entry
  3. @Component
  4. struct AboutPage {
  5. @State message: string = 'AboutPage'
  6. @State msg:string = router.getParams()?.['pTest']
  7. build() {
  8. Row() {
  9. Column() {
  10. Text(this.message)
  11. .fontSize(50)
  12. .fontWeight(FontWeight.Bold)
  13. Text(this.msg)
  14. .fontSize(20)
  15. Button('back')
  16. .onClick(()=>{
  17. router.back();
  18. })
  19. }
  20. .width('100%')
  21. }
  22. .height('100%')
  23. }
  24. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/338303?site
推荐阅读
相关标签
  

闽ICP备14008679号