HarmonyOS 鸿蒙Next如何传参数给CustomDialog自定义弹窗?
HarmonyOS 鸿蒙Next如何传参数给CustomDialog自定义弹窗?
可以参考开发指南实现。链接如下:
https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-promptaction-V5
promptAction.openCustomDialog 全局弹窗参考代码如下:
1、GlobalContext.ets
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);
}
}
2、DialogUtils.ets
import { promptAction } from '[@kit](/user/kit).ArkUI'
import { GlobalContext } from './GlobalContext'
[@Builder](/user/Builder)
export function customDialogBuilder(content: String) {
Column() {
Text(`Tip: ${content} `).fontSize(20).height("30%")
Text('失败原因:失败原因失败原因失败原因失败原因失败原因失败原因失败原因!').fontSize(16).height("30%")
Row() {
Button("确认").onClick(() => {
promptAction.closeCustomDialog(getCustomDialogId())
})
Blank().width(50)
Button("取消").onClick(() => {
promptAction.closeCustomDialog(getCustomDialogId())
})
}
.margin({ top: 30 })
}.height(200).padding(5)
}
function getCustomDialogId() {
// 取customDialogId
let customDialogId = GlobalContext.getContext().getObject('customDialogId') as number
return customDialogId;
}
3、HttpUtil.ets
import { GlobalContext } from './GlobalContext';
import { promptAction } from '[@kit](/user/kit).ArkUI';
import { customDialogBuilder } from './DialogUtils';
export function testPromptDialog() {
// 方法调用后使用弹窗
// 使用GlobalContext中UIContext
const that = GlobalContext.getContext().getObject('UIContext') as UIContext;
if (that) {
promptAction.openCustomDialog({
builder: customDialogBuilder.bind(that, "网络请求失败!")
}).then((dialogId: number) => {
GlobalContext.getContext().setObject('customDialogId', dialogId)
})
}
}
4、使用弹窗
[@Entry](/user/Entry)
[@Component](/user/Component)
struct Index {
aboutToAppear(): void {
GlobalContext.getContext().setObject('UIContext', this)
GlobalContext.getContext().setObject('customDialogId', 0)
}
build() {
Button("promptAction弹窗")
.onClick(() => {
testPromptDialog()
})
}
}
更多关于HarmonyOS 鸿蒙Next如何传参数给CustomDialog自定义弹窗?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中,传递参数给CustomDialog自定义弹窗可以通过以下方式实现:
-
创建CustomDialog类:首先,定义一个CustomDialog类,继承自Dialog或自定义Dialog基类。在CustomDialog类中,可以定义一个或多个构造函数,用于接收外部传递的参数。例如,可以定义一个
String
类型的参数用于显示内容。 -
在构造函数中接收参数:在CustomDialog的构造函数中,添加参数接收逻辑,并将这些参数保存到类的成员变量中。这样,在CustomDialog的生命周期内,可以随时访问这些参数。
-
在Dialog布局中使用参数:在CustomDialog的布局文件中,可以使用这些参数来动态设置UI元素的内容。例如,通过
setText
方法将传递的字符串参数设置到TextView上。 -
实例化并显示CustomDialog:在需要显示CustomDialog的地方,创建CustomDialog的实例,并传递所需的参数。然后,调用
show
方法显示Dialog。
示例代码(简化):
// CustomDialog.java
public class CustomDialog extends Dialog {
private String message;
public CustomDialog(@NonNull Context context, String message) {
super(context);
this.message = message;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.dialog_custom);
TextView textView = findViewById(R.id.textView);
textView.setText(message);
}
}
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html