HarmonyOS 鸿蒙Next 如何在类里面调用全局自定义弹窗

HarmonyOS 鸿蒙Next 如何在类里面调用全局自定义弹窗 在一个viewmodel方法里面写一个全局即可调用的自定义弹窗

在类中使用promptAction.openCustomDialog直接闪退

2 回复

可以参考如下

import { BusinessError } from '@kit.BasicServicesKit';
import { ComponentContent } from '@kit.ArkUI';

class Params {
  text: string = "";

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

class openDialog {
  open(uiContext:UIContext){
    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}`);
    };
  }
}

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

@Entry
@Component
struct Index {

  build() {
    Row() {
      Column() {
        Button("click me")
          .onClick(() => {
            new openDialog().open(this.getUIContext())
          })
      }
      .width('100%')
      .height('100%')
    }
    .height('100%')
  }
}

更多关于HarmonyOS 鸿蒙Next 如何在类里面调用全局自定义弹窗的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next系统中,若想在类里面调用全局自定义弹窗,可以通过以下方式实现:

首先,确保你的自定义弹窗已经定义并初始化完成。在鸿蒙系统中,弹窗通常是通过Ability或AbilitySlice来展示的,但你可以通过创建一个全局可访问的弹窗管理类来实现跨类的调用。

  1. 定义弹窗管理类: 创建一个单例或静态类来管理你的弹窗。这个类负责弹窗的初始化、显示和隐藏。

  2. 在需要调用的类中引用弹窗管理类: 在你的业务逻辑类中,通过弹窗管理类的实例或静态方法来调用弹窗。

  3. 实现弹窗的显示逻辑: 在弹窗管理类中,实现一个方法来展示弹窗。这个方法需要接收必要的参数(如上下文、弹窗内容等),并调用鸿蒙系统提供的API来展示弹窗。

  4. 调用弹窗: 在需要显示弹窗的地方,通过弹窗管理类的实例或静态方法调用显示弹窗的逻辑。

示例代码(伪代码):

// 假设你有一个名为PopupManager的弹窗管理类
PopupManager.getInstance().showCustomPopup(context, popupContent);

注意:上述代码为伪代码,实际实现需根据鸿蒙系统的API和你的具体需求来编写。

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

回到顶部