赞
踩
这篇博文在《鸿蒙:从0到“Hello Harmony”》基础上实现两个Page页面跳转
第一个页面就是“Hello Harmony”,把文件名和显示内容都改一下,改成“FirstPage”,再添加一个“Next”按钮。
- @Entry
- @Component
- struct FristPage {
- @State message1: string = "FirstPage"
- @State message2: string = 'Next'
-
- build() {
- Row() {
- Column() {
- Text(this.message1)
- .fontSize(30)
- .fontWeight(FontWeight.Bold)
- .height("10%")
- .margin({
- top: 0
- })
-
- Button(this.message2)
- .fontSize(30)
- .fontWeight(FontWeight.Bold)
- .height('5%')
- .type(ButtonType.Capsule)
- .margin({
- top: 30
- })
- .backgroundColor("#0D9FFB")
- .width('50%')
- .height('5%')
- }
- .width('100%')
- }
- .height('100%')
- }
- }
在编辑窗口右上角的侧边工具栏,点击Previewer,打开预览器。第一个页面效果如下图所示:
1.在“entry > src > main > ets > pages”目录下,新建SecondPage.ets
同样,实现一个文本和一个Button按钮
- @Entry
- @Component
- struct SecondPage {
- @State message1: string = 'SecondPage'
- @State message2: string = 'Back'
-
- build() {
- Row() {
- Column() {
- Text(this.message1)
- .fontSize(30)
- .fontWeight(FontWeight.Bold)
-
- Button(this.message2)
- .fontSize(30)
- .fontWeight(FontWeight.Bold)
- .height('5%')
- .type(ButtonType.Capsule)
- .margin({
- top: 30
- })
- .backgroundColor("#0D9FFB")
- .width('50%')
- .height('5%')
- }
- .width('100%')
- }
- .height('100%')
- }
- }
Previewer效果:
配置第二个页面的路由。
在“Project”窗口,打开“entry > src > main > resources > base > profile”,
在main_pages.json文件中的“src”下配置第二个页面的路由“pages/second”。
代码如下:
- {
- "src": [
- "pages/FirstPage",
- "pages/SecondPage"
- ]
- }
页面间的导航可以通过页面路由router来实现。
页面路由router根据页面url找到目标页面,从而实现跳转。
使用页面路由需要导入router模块。
在第一个页面中,跳转按钮绑定onClick事件,点击按钮时跳转到第二页。
“FirstPage.ets”文件的代码如下:
- // @ohos.router模块功能从API version 8开始支持,请使用对应匹配的SDK
- import router from '@ohos.router';
-
- @Entry
- @Component
- struct FristPage {
- @State message1: string = "FirstPage"
- @State message2: string = 'Next'
-
- build() {
- Row() {
- Column() {
- Text(this.message1)
- .fontSize(30)
- .fontWeight(FontWeight.Bold)
- .height("10%")
- .margin({
- top: 0
- })
-
- Button(this.message2)
- .fontSize(30)
- .fontWeight(FontWeight.Bold)
- .height('5%')
- .type(ButtonType.Capsule)
- .margin({
- top: 30
- })
- .backgroundColor("#0D9FFB")
- .width('50%')
- .height('5%')
- .onClick(() => {
- console.info(`Succeeded in clicking the 'Next' button.`)
- try {
- router.pushUrl({ url: 'pages/SecondPage' })
- console.info('Succeeded in jumping to the second page.')
- } catch (err) {
- console.error(`Failed to jump to the second page.Code is ${err.code}, message is ${err.message}`)
- }
- })
- }
- .width('100%')
- }
- .height('100%')
- }
- }
在第二个页面中,返回按钮绑定onClick事件,点击按钮时返回到第一页。
“SecondPage.ets”文件的示例如下:
- import router from '@ohos.router';
-
- @Entry
- @Component
- struct SecondPage {
- @State message1: string = 'SecondPage'
- @State message2: string = 'Back'
-
- build() {
- Row() {
- Column() {
- Text(this.message1)
- .fontSize(30)
- .fontWeight(FontWeight.Bold)
-
- Button(this.message2)
- .fontSize(30)
- .fontWeight(FontWeight.Bold)
- .height('5%')
- .type(ButtonType.Capsule)
- .margin({
- top: 30
- })
- .backgroundColor("#0D9FFB")
- .width('50%')
- .height('5%')
- .onClick(() => {
- console.info(`Succeeded in clicking the 'Next' button.`)
- try {
- router.pushUrl({ url: 'pages/FirstPage' })
- console.info('Succeeded in jumping to the second page.')
- } catch (err) {
- console.error(`Failed to jump to the second page.Code is ${err.code}, message is ${err.message}`)
- }
- })
-
- }
- .width('100%')
- }
- .height('100%')
- }
- }
如开头展示
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。