HarmonyOS 鸿蒙Next CustomDialog如何禁用返回键关闭弹框

发布于 1周前 作者 gougou168 来自 鸿蒙OS

HarmonyOS 鸿蒙Next CustomDialog如何禁用返回键关闭弹框

如题,使用API12有解决办法吗

6 回复

API12 onWillDismiss回调中可以zu'zhi

onWillDismiss:(dismissDialogAction: DismissDialogAction)=> {
      console.info("reason=" + JSON.stringify(dismissDialogAction.reason))
      console.log("dialog onWillDismiss")
      if (dismissDialogAction.reason == DismissReason.PRESS_BACK) {
        dismissDialogAction.dismiss()
      }
      if (dismissDialogAction.reason == DismissReason.TOUCH_OUTSIDE) {
        dismissDialogAction.dismiss()
      }
    }, 

我也是使用API12,当前使用DevEco Studio是5.0.3.100版本,安装的SDK版本是Developer Beta1(B.0.13),但CustomDialogControllerOptions接口里没有onWillDismiss这个字段,

文档写的是12+,可能需要更高的版本

找HarmonyOS工作还需要会Flutter的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:https://www.bilibili.com/video/BV1S4411E7LY/?p=17

在HarmonyOS鸿蒙系统中,Next CustomDialog默认是可以通过返回键关闭的。如果你希望禁用这一功能,可以通过重写对话框的按键事件处理逻辑来实现。

具体步骤如下:

  1. 重写对话框的onBackPressed方法:在创建CustomDialog时,可以通过继承Dialog类并重写其onBackPressed方法,在该方法中不调用super.onBackPressed()来阻止默认的返回键处理逻辑。

  2. 设置对话框的Cancelable属性:确保将对话框的setCancelable(false),这样用户无法通过点击对话框外的区域来关闭对话框。

  3. 处理对话框内的返回键事件:如果对话框内有其他控件(如EditText等)可能会自己处理返回键事件,确保这些控件的返回键处理逻辑不会导致对话框关闭。

示例代码片段(假设你有一个自定义的Dialog类):

public class MyCustomDialog extends Dialog {
    public MyCustomDialog(@NonNull Context context) {
        super(context);
        setCancelable(false);
    }

    @Override
    public boolean onBackPressed() {
        // 不调用super.onBackPressed()来阻止返回键关闭对话框
        return true;
    }
}

通过上述方法,你应该能够禁用通过返回键关闭CustomDialog的功能。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部