HarmonyOS 鸿蒙Next 异步方法里router跳转到了subwindow里
HarmonyOS 鸿蒙Next 异步方法里router跳转到了subwindow里
根据demo,原因是因为子窗口没有设置为不可获焦,所以当最上层的子窗口销毁之后,第二个子窗口自动获得了焦点,系统默认在子窗口上进行了弹窗操作。
可以通过设置子窗口为不可获焦状态,通过setWindowFocusable可以实现,可以参考以下demo:
//FloatManager.ets
showSubWindow() {
if (this.windowStage_ == null) {
Log.error(TAG, 'Failed to create the subwindow. Cause: windowStage_ is null');
} else {
console.info('this.sub_windowClass.getWindowProperties().focusable = ' +
this.sub_windowClass.getWindowProperties().focusable)
this.sub_windowClass.setWindowFocusable(false).then(() => {
console.info('this.sub_windowClass.getWindowProperties().focusable = ' +
this.sub_windowClass?.getWindowProperties().focusable)
})
}
}
<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>
参考链接:
更多关于HarmonyOS 鸿蒙Next 异步方法里router跳转到了subwindow里的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next的开发环境中,异步方法里通过router跳转到subwindow是一个常见的需求。这种情况通常涉及到任务调度和UI更新的协调。
首先,确保你的异步方法是在合适的线程中执行的。鸿蒙系统对UI操作有严格的线程要求,所有UI相关的操作必须在主线程(UI线程)中执行。如果你的异步方法是在后台线程中运行的,你需要使用线程切换机制(如PostTask到UITaskDispatcher)来确保router跳转操作在主线程中执行。
其次,检查router跳转的目标subwindow是否已经正确注册和配置。在鸿蒙系统中,每个subwindow都需要在manifest文件中声明,并且需要配置正确的路由路径。确保你的跳转路径与manifest中配置的路径一致。
此外,还要检查跳转时传递的参数是否正确。如果参数有误或缺失,可能导致跳转失败或行为异常。
最后,如果以上步骤都确认无误,但问题依旧存在,可能是系统内部的bug或特定环境下的兼容性问题。此时,建议查看鸿蒙系统的官方文档和更新日志,看是否有相关的修复或说明。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html