#鸿蒙通关秘籍#鸿蒙系统悬浮窗实现中如何让主窗口进行页面跳转

HarmonyOS
7天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
时光笔SCM

在鸿蒙系统中,通过应用子窗口的 Router 进行页面跳转时,跳转的目标窗口是子窗口而非主窗口。这是因为每个 Window 都有自己的 UIContextRouter。要解决这个问题,可以使用 EventHub 来通知主窗口进行跳转:

  1. 在子窗口的点击事件中,发送事件:

    TapGesture({ count: 1 })
      .onAction(() => {
          this.context.eventHub.emit("event_click_float");
      });
    
  2. EntryAbility 中订阅事件,接收到事件后进行主窗口跳转:

    onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
        eventHub.on("event_click_float", () => {
          if (this.mainRouter) {
            this.mainRouter.pushUrl(...);
          }
        });
    }
    
  3. 提前获取主窗口的 Router

    windowStage.loadContent('pages/Index', (err, data) => {
      this.mainRouter = this.windowClass!.getUIContext().getRouter();
    });
    
分享
微博
QQ
微信
回复
7天前
相关问题
基于子窗口实现应用内悬浮
735浏览 • 1回复 待解决
在hsp子模块如何加载悬浮页面
1894浏览 • 1回复 待解决