HarmonyOS 鸿蒙Next UIContext.getPromptAction的onWillDismiss无法拦截物理返回
HarmonyOS 鸿蒙Next UIContext.getPromptAction的onWillDismiss无法拦截物理返回
通过getUIContext().getPromptAction().openCustomDialog配置options拦截物理返回事件,设置dismissDialogAction.dismiss(),弹窗仍然消失,需要修改为拦截物理返回后弹窗不消失。
this.getUIContext().getPromptAction().openCustomDialog(this.contentNode, {
onWillDismiss: (dismissDialogAction: DismissDialogAction) => {
if (dismissDialogAction.reason == DismissReason.PRESS_BACK) {
dismissDialogAction.dismiss()
}
if (dismissDialogAction.reason == DismissReason.TOUCH_OUTSIDE) {
dismissDialogAction.dismiss()
}
}
})
操作步骤:
1、启动App后点击物理返回
2、弹窗消失
参考回答:https://developer.huawei.com/consumer/cn/forum/topic/0201165844399826387?fid=0109140870620153026
this.contentNode = new ComponentContent(this.getUIContext(), wrapBuilder(upgradeDialog), this.params)
this.getUIContext().getPromptAction().openCustomDialog(this.contentNode, {
onWillDismiss: (dismissDialogAction: DismissDialogAction) => {
if (dismissDialogAction.reason == DismissReason.PRESS_BACK) {
// dismissDialogAction.dismiss()
}
if (dismissDialogAction.reason == DismissReason.TOUCH_OUTSIDE) {
// dismissDialogAction.dismiss()
}
}
})
更多关于HarmonyOS 鸿蒙Next UIContext.getPromptAction的onWillDismiss无法拦截物理返回的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS的鸿蒙系统中,UIContext的getPromptAction
方法用于处理系统提示框(如对话框、Toast等)的相关动作。对于onWillDismiss
回调,它通常用于在提示框即将消失时执行一些操作。然而,物理返回键(如设备上的返回按钮)的行为有时可能不直接受该回调控制,因为它涉及到系统级别的导航逻辑。
在鸿蒙系统中,物理返回键的行为通常由系统导航管理,且多数情况下会直接触发Activity或Fragment的销毁或返回,而不是通过UIContext的回调来处理。这意味着,即便在onWillDismiss
中加入了拦截逻辑,也可能无法阻止物理返回键导致的提示框消失或页面返回。
要处理这类问题,可能需要考虑以下方向:
- 重写Activity或Fragment的onBackPressed方法:在该方法中检查当前是否有提示框显示,并决定是否拦截返回键。
- 使用系统导航拦截器:查看鸿蒙系统是否提供了系统级别的导航拦截API,允许开发者自定义返回键的行为。
请注意,这些方法可能需要结合具体的应用场景和鸿蒙系统的版本进行调整。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html