HarmonyOS 鸿蒙Next关于封装promptAction.openCustomDialog问题

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

HarmonyOS 鸿蒙Next关于封装promptAction.openCustomDialog问题

想要在逻辑代码中封装一个通用的promptAction.openCustomDialog,但是好像不写在@Component文件下就会导致bind报错 请问有相关的封装的demo参考吗
 

2 回复

可以参考下面demo

index页面:

import { BusinessError } from '@ohos.base';
import { ComponentContent } from "@ohos.arkui.node";
import { Params, buildText } from '../common/dialog'

@Entry
@Component
struct Index {
  @State message: string = "hello"

  build() {
    Row() {
      Column() {
        Button("click me")
          .onClick(() => {

            let uiContext = this.getUIContext();
            let promptAction = uiContext.getPromptAction();
            let contentNode = new ComponentContent(uiContext, wrapBuilder(buildText), new Params("这是一个弹框"));
            try {
              promptAction.openCustomDialog(contentNode);
            } catch (error) {
              let message = (error as BusinessError).message;
              let code = (error as BusinessError).code;
              console.error(`OpenCustomDialog args error code is ${code}, message is ${message}`);
            }
            ;
          })
      }
      .width('100%')
      .height('100%')
    }
    .height('100%')
  }
}

dialog封装:

export class Params {
  text: string = ""

  constructor(text: string) {
    this.text = text;
  }
}

@Builder
export function buildText(params: Params) {
  Column() {
    Text(params.text)
      .fontSize(50)
      .fontWeight(FontWeight.Bold)
      .margin({ bottom: 36 })
  }.backgroundColor('#FFF0F0F0').width('100%')
}

参考文档: ‘https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-arkui-uicontext-V5#getpromptaction’

https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/js-apis-arkui-UIContext.md#opencustomdialog12’

更多关于HarmonyOS 鸿蒙Next关于封装promptAction.openCustomDialog问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


针对HarmonyOS 鸿蒙Next封装promptAction.openCustomDialog的问题,以下是一些专业的解答:

在封装promptAction.openCustomDialog时,首先需明确其允许开发者在应用内创建并显示自定义对话框,用于提示用户信息或获取用户输入。若想在全局范围内封装此功能,可遵循以下步骤:

  1. 定义一个自定义Dialog类,继承自系统Dialog基类,并实现所需的UI布局和逻辑。在自定义Dialog类中,重写onCreateDialog或onCreateView方法以设置Dialog的视图。
  2. 创建一个全局可访问的工具类或服务,用于管理Dialog的显示。该工具类可包含静态方法,接受必要的参数(如对话框内容、按钮点击事件等),并实例化及显示自定义Dialog。
  3. 确保应用已正确配置权限和依赖,以支持自定义Dialog的显示。

由于HarmonyOS系统不断更新,建议查阅最新的官方文档,以确保实现方法与当前系统版本兼容。此外,若遇到具体技术问题,如参数传递、UI布局调整等,可参考官方示例代码或社区讨论。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部