HarmonyOS 鸿蒙Next 如何在一个非@Entry的类中创建一个CustomDialogController弹窗
HarmonyOS 鸿蒙Next 如何在一个非@Entry的类中创建一个CustomDialogController弹窗
我目前在class类中创建弹窗对象并调用open()方法无法正常弹窗,示例代码如下:
export class PopWindowUtil {
//弹窗
alertDialogController: CustomDialogController = new CustomDialogController({
builder: CustomDialogAlertView({
title: '温馨提示',
message: '测试信息',
confirm: () => {
this.alertDialogController.close();
},
confirmText: '知道了'
}),
alignment: DialogAlignment.Center,
customStyle: true,
autoCancel: false
})
initialize() {
this.alertDialogController.open();
}
}
更多关于HarmonyOS 鸿蒙Next 如何在一个非@Entry的类中创建一个CustomDialogController弹窗的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
参考demo:
import { GlobalContext } from './GlobalContext'
import { testPromptDialog } from './HttpUtil'
@Entry
@Component
struct Index {
@State message: string = ‘Hello World’
aboutToAppear(): void {
GlobalContext.getContext().setObject(‘UIContext’, this)
}
build() {
Row() {
Column() {
Text(this.message)
.fontSize(50)
.fontWeight(FontWeight.Bold)
.onClick(() => {
testPromptDialog()
})
}
.width(‘100%’)
}
.height(‘100%’)
.backgroundColor(Color.Orange)
}
}
export class GlobalContext {
private constructor() {
}
private static instance: GlobalContext;
private _objects = new Map<string, Object>();
public static getContext(): GlobalContext {
if (!GlobalContext.instance) {
GlobalContext.instance = new GlobalContext();
}
return GlobalContext.instance;
}
getObject(value: string): Object | undefined {
return this._objects.get(value);
}
setObject(key: string, objectClass: Object): void {
this._objects.set(key, objectClass);
}
}
<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>
import { promptAction } from ‘@kit.ArkUI’;
import { GlobalContext } from ‘./GlobalContext’;
let customDialogId: number = 0
@Builder
export function customDialogBuilder(content: String) {
Column() {
Text(Tip: ${content}
).fontSize(20).height(“30%”)
Text(‘失败原因:!!!’).fontSize(16).height(“30%”)
Row() {
Button(“确认”).onClick(() => {
promptAction.closeCustomDialog(customDialogId)
})
Blank().width(50)
Button(“取消”).onClick(() => {
promptAction.closeCustomDialog(customDialogId)
})
}
.margin({ top: 30 })
}.height(200).padding(5)
}
export function testPromptDialog() {
const that = GlobalContext.getContext().getObject(‘UIContext’) as UIContext;
if (that) {
promptAction.openCustomDialog({
builder: customDialogBuilder.bind(that, “网络请求失败!”)
}).then((dialogId: number) => {
customDialogId = dialogId;
})
}
}
<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>
更多关于HarmonyOS 鸿蒙Next 如何在一个非@Entry的类中创建一个CustomDialogController弹窗的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中,若要在非@Entry
类中创建一个CustomDialogController
弹窗,可以按照以下步骤进行:
-
定义弹窗布局:首先,在
resources/layout
目录下定义一个XML文件,用于描述弹窗的布局。 -
创建CustomDialogController:在非
@Entry
类中,通过CustomDialogController
的构造函数创建一个实例。构造函数通常需要传入上下文和弹窗布局的资源ID。 -
设置弹窗属性:可以使用
CustomDialogController
提供的方法设置弹窗的属性,如标题、按钮等。 -
显示弹窗:通过调用
show
方法,将弹窗显示出来。通常,这个方法会返回一个布尔值,表示弹窗是否成功显示。
示例代码:
// 假设在非@Entry类中
CustomDialogController dialogController = new CustomDialogController(this, ResourceTable.Layout_dialog_layout);
dialogController.setTitle("弹窗标题");
// 设置其他属性...
boolean isShown = dialogController.show();
if (isShown) {
// 弹窗成功显示
} else {
// 弹窗显示失败
}
注意:上述代码为示意性代码,实际开发中需根据具体需求调整。this
代表当前类的上下文,需确保在非@Entry
类中能正确获取。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html