提供类似aar包内Activity之间跳转问题

1. SDK对外提供接口,启动接口会拉起SDK内部的页面。

2. SDK内部有多个页面,页面间有来回的跳转。

HarmonyOS
2024-02-20 15:03:11
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
richard_li_li
1

可以在har中使用命名路由( router.pushNamedRoute )来实现

示例代码

MainPage

@Entry({ routeName: 'MainPage' }) 
@Component 
export struct MainPage { 
  @State message: string = 'Hello World'; 
 
  build() { 
    Row() { 
      Column() { 
        Text(this.message) 
          .fontSize(30) 
          .fontWeight(FontWeight.Bold) 
          .backgroundColor(Color.Pink) 
        Text(JSON.stringify(router.getParams())) 
          .fontSize(30) 
          .fontWeight(FontWeight.Bold) 
          .backgroundColor(Color.Yellow) 
        Button('跳转第二个页面') 
          .onClick(() => { 
            router.pushNamedRoute({ 
              name: 'SecondPage' 
            }) 
          }) 
      } 
      .width('100%') 
    } 
    .height('100%') 
  } 
}
SecondPage
@Entry({ routeName: 'SecondPage' }) 
@Component 
export struct SecondPage { 
  @State message: string = 'SecondPage'; 
 
  build() { 
    Row() { 
      Column() { 
        Text(this.message) 
          .fontSize(50) 
          .fontWeight(FontWeight.Bold) 
          .backgroundColor(Color.Yellow) 
        Button('返回上一页router') 
          .onClick(() => { 
            console.log('返回上一页通过router') 
            router.pushNamedRoute({ 
              name: 'MainPage' 
            }) 
          }) 
        Button('返回上一页通过back') 
          .onClick(() => { 
            console.log('返回上一页通过back') 
            router.back() 
 
          }) 
      } 
      .width('100%') 
    } 
    .height('100%') 
  } 
}
class RouterParams { 
  private param1: string 
  private param2: number[] 
 
  constructor(param1: string, param2: number[]) { 
    this.param1 = param1 
    this.param2 = param2 
  } 
} 
 
export class Test { 
  static routerToAnother(message: string, arr: Array<number>) { 
    router.pushNamedRoute({ 
      name: 'MainPage', 
      params: new RouterParams(message, arr) 
    }) 
  } 
}

har中Index.ets

export { MainPage } from './src/main/ets/components/mainpage/MainPage'; 
export { Test } from './src/main/ets/components/mainpage/Test'; 
export {SecondPage}from'./src/main/ets/components/mainpage/SecondPage'

外部引用

@Entry 
@Component 
struct Index { 
  @State message: string = '使用接口方法'; 
 
  build() { 
    Row() { 
      Column() { 
        Button(this.message) 
          .fontSize(50) 
          .fontWeight(FontWeight.Bold) 
          .onClick(() => { 
            Test.routerToAnother('message', [1, 2.3]) 
          }) 
 
        Button('使用命名路由') 
          .fontSize(50) 
          .fontWeight(FontWeight.Bold) 
          .onClick(() => { 
            router.pushNamedRoute({ 
              name: 'MainPage' 
            }) 
          }) 
      } 
      .width('100%') 
    } 
    .height('100%') 
  } 
}
分享
微博
QQ
微信
回复
2024-02-20 20:11:50
相关问题
HarmonyOS 如何打包类似aar的第三方
89浏览 • 1回复 待解决
HarmonyOS HAR之间的路由跳转
678浏览 • 1回复 待解决
Service 开启 Activity 失败
2109浏览 • 1回复 待解决
activity对应HarmonyOS如何实现?
324浏览 • 1回复 待解决
HarmonyOS是否提供类似opencv的能力
1263浏览 • 1回复 待解决
har里的worker如何在entry使用
2132浏览 • 1回复 待解决
关于应用下载更新
424浏览 • 1回复 待解决
页面之间跳转方式怎么设置的
6631浏览 • 1回复 待解决
HarmonyOS 请提供个路由跳转Demo
391浏览 • 1回复 待解决
Harmony OS有没有类似KeyChain的api提供
517浏览 • 1回复 待解决
如何实现设备跨应用的UIAbility跳转
2180浏览 • 1回复 待解决