当前位置:   article > 正文

鸿蒙:实现两个Page页面跳转

鸿蒙:实现两个Page页面跳转

效果展示

这篇博文在《鸿蒙:从0到“Hello Harmony”》基础上实现两个Page页面跳转

1.构建第一个页面

第一个页面就是“Hello Harmony”,把文件名和显示内容都改一下,改成“FirstPage”,再添加一个“Next”按钮。

  1. @Entry
  2. @Component
  3. struct FristPage {
  4. @State message1: string = "FirstPage"
  5. @State message2: string = 'Next'
  6. build() {
  7. Row() {
  8. Column() {
  9. Text(this.message1)
  10. .fontSize(30)
  11. .fontWeight(FontWeight.Bold)
  12. .height("10%")
  13. .margin({
  14. top: 0
  15. })
  16. Button(this.message2)
  17. .fontSize(30)
  18. .fontWeight(FontWeight.Bold)
  19. .height('5%')
  20. .type(ButtonType.Capsule)
  21. .margin({
  22. top: 30
  23. })
  24. .backgroundColor("#0D9FFB")
  25. .width('50%')
  26. .height('5%')
  27. }
  28. .width('100%')
  29. }
  30. .height('100%')
  31. }
  32. }

在编辑窗口右上角的侧边工具栏,点击Previewer,打开预览器。第一个页面效果如下图所示:

2.构建第二个页面

1.在“entry > src > main > ets > pages”目录下,新建SecondPage.ets

同样,实现一个文本和一个Button按钮

  1. @Entry
  2. @Component
  3. struct SecondPage {
  4. @State message1: string = 'SecondPage'
  5. @State message2: string = 'Back'
  6. build() {
  7. Row() {
  8. Column() {
  9. Text(this.message1)
  10. .fontSize(30)
  11. .fontWeight(FontWeight.Bold)
  12. Button(this.message2)
  13. .fontSize(30)
  14. .fontWeight(FontWeight.Bold)
  15. .height('5%')
  16. .type(ButtonType.Capsule)
  17. .margin({
  18. top: 30
  19. })
  20. .backgroundColor("#0D9FFB")
  21. .width('50%')
  22. .height('5%')
  23. }
  24. .width('100%')
  25. }
  26. .height('100%')
  27. }
  28. }

Previewer效果:

3.配置路由

配置第二个页面的路由。

在“Project”窗口,打开“entry > src > main > resources > base > profile”,

main_pages.json文件中的“src”下配置第二个页面的路由“pages/second”

代码如下:

  1. {
  2. "src": [
  3. "pages/FirstPage",
  4. "pages/SecondPage"
  5. ]
  6. }

4.实现页面跳转

​页面间的导航可以通过页面路由router来实现。

页面路由router根据页面url找到目标页面,从而实现跳转。

使用页面路由需要导入router模块。

(1).第一个页面跳转到第二个页面

在第一个页面中,跳转按钮绑定onClick事件,点击按钮时跳转到第二页。

FirstPage.ets”文件的代码如下:

  1. // @ohos.router模块功能从API version 8开始支持,请使用对应匹配的SDK
  2. import router from '@ohos.router';
  3. @Entry
  4. @Component
  5. struct FristPage {
  6. @State message1: string = "FirstPage"
  7. @State message2: string = 'Next'
  8. build() {
  9. Row() {
  10. Column() {
  11. Text(this.message1)
  12. .fontSize(30)
  13. .fontWeight(FontWeight.Bold)
  14. .height("10%")
  15. .margin({
  16. top: 0
  17. })
  18. Button(this.message2)
  19. .fontSize(30)
  20. .fontWeight(FontWeight.Bold)
  21. .height('5%')
  22. .type(ButtonType.Capsule)
  23. .margin({
  24. top: 30
  25. })
  26. .backgroundColor("#0D9FFB")
  27. .width('50%')
  28. .height('5%')
  29. .onClick(() => {
  30. console.info(`Succeeded in clicking the 'Next' button.`)
  31. try {
  32. router.pushUrl({ url: 'pages/SecondPage' })
  33. console.info('Succeeded in jumping to the second page.')
  34. } catch (err) {
  35. console.error(`Failed to jump to the second page.Code is ${err.code}, message is ${err.message}`)
  36. }
  37. })
  38. }
  39. .width('100%')
  40. }
  41. .height('100%')
  42. }
  43. }

(1).第二个页面跳转到第一个页面

在第二个页面中,返回按钮绑定onClick事件,点击按钮时返回到第一页。

“SecondPage.ets”文件的示例如下:

  1. import router from '@ohos.router';
  2. @Entry
  3. @Component
  4. struct SecondPage {
  5. @State message1: string = 'SecondPage'
  6. @State message2: string = 'Back'
  7. build() {
  8. Row() {
  9. Column() {
  10. Text(this.message1)
  11. .fontSize(30)
  12. .fontWeight(FontWeight.Bold)
  13. Button(this.message2)
  14. .fontSize(30)
  15. .fontWeight(FontWeight.Bold)
  16. .height('5%')
  17. .type(ButtonType.Capsule)
  18. .margin({
  19. top: 30
  20. })
  21. .backgroundColor("#0D9FFB")
  22. .width('50%')
  23. .height('5%')
  24. .onClick(() => {
  25. console.info(`Succeeded in clicking the 'Next' button.`)
  26. try {
  27. router.pushUrl({ url: 'pages/FirstPage' })
  28. console.info('Succeeded in jumping to the second page.')
  29. } catch (err) {
  30. console.error(`Failed to jump to the second page.Code is ${err.code}, message is ${err.message}`)
  31. }
  32. })
  33. }
  34. .width('100%')
  35. }
  36. .height('100%')
  37. }
  38. }

5.实现效果

如开头展示

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

闽ICP备14008679号