Navigation 在栈底页面时,无法侧滑返回桌面

​Navigation 在栈底页面时, 其侧滑返回事件应该由承载Navigation的ArkUI Page的 onBackPress来接管。 从而返回桌面。

HarmonyOS
2024-01-30 23:27:15
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
washington_lee

在BasePage的onBackPress方法中判断stackSize是否为1,是:调用emitter发送消息给Navigation关闭路由。

.onBackPressed(() => { 
  console.log(`cwq PF- onBackPressed ${this.constructor.name}`) 
  let stackSize = this.mainStack.size(); 
  if (stackSize === 1) { 
    console.log('cwq stack size is ' + stackSize) 
    let eventData: emitter.EventData = { 
      data: { 
        "id": 1, 
      } 
    }; 
    let innerEvent: emitter.InnerEvent = { 
      eventId: 1, 
      priority: emitter.EventPriority.HIGH 
    }; 
    emitter.emit(innerEvent, eventData); 
  } 
  return false; 
})

在主Navigation注册事件监听,收到监听后返回页面栈。

let innerEvent: emitter.InnerEvent = { 
  eventId: 1 
}; 
 
// 收到eventId为1的事件后执行回调函数 
emitter.on(innerEvent, () => { 
  console.log('cwq on innerEvent call back') 
  // this.onBackPress(); 
  router.back() 
});
分享
微博
QQ
微信
回复
2024-02-01 11:47:04
相关问题
如何在navigation跳转页面返回传参
467浏览 • 1回复 待解决
返回页面不触发aboutToAppear
1383浏览 • 1回复 待解决
实现二次退出应用
533浏览 • 1回复 待解决
删除功能的列表有哪些?
421浏览 • 1回复 待解决
Navigation管理多页面堆栈太多问题
589浏览 • 1回复 待解决
路由页面可以跳过最大限制32吗
338浏览 • 1回复 待解决