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

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

HarmonyOS
2024-01-30 23:27:15
2778浏览
收藏 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; 
})
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.

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

let innerEvent: emitter.InnerEvent = { 
  eventId: 1 
}; 
 
// 收到eventId为1的事件后执行回调函数 
emitter.on(innerEvent, () => { 
  console.log('cwq on innerEvent call back') 
  // this.onBackPress(); 
  router.back() 
});
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
分享
微博
QQ
微信
回复
2024-02-01 11:47:04


相关问题
HarmonyOS 返回返回无法拦截事件
1270浏览 • 1回复 待解决
HarmonyOS UIAbility 如何拦截返回
636浏览 • 1回复 待解决
HarmonyOS 关于返回的监听
470浏览 • 1回复 待解决
HarmonyOS dialog如何禁止返回关闭
639浏览 • 1回复 待解决
HarmonyOS 如何禁止系统的返回
469浏览 • 1回复 待解决
HarmonyOS 返回事件拦截与绑定
2319浏览 • 1回复 待解决
如何在navigation跳转页面返回传参
2680浏览 • 1回复 待解决
HarmonyOS webview返回上一页问题
1673浏览 • 1回复 待解决