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、弹窗消失
 

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中加入了拦截逻辑,也可能无法阻止物理返回键导致的提示框消失或页面返回。

要处理这类问题,可能需要考虑以下方向:

  1. 重写Activity或Fragment的onBackPressed方法:在该方法中检查当前是否有提示框显示,并决定是否拦截返回键。
  2. 使用系统导航拦截器:查看鸿蒙系统是否提供了系统级别的导航拦截API,允许开发者自定义返回键的行为。

请注意,这些方法可能需要结合具体的应用场景和鸿蒙系统的版本进行调整。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!