package com.fujica.abk.component; import com.fujica.abk.ResourceTable; import ohos.agp.components.*; import ohos.agp.utils.LayoutAlignment; import ohos.agp.window.dialog.CommonDialog; import ohos.app.Context; /** * 支付失败弹窗 */ public class PayFailDialog { private Context context; private CommonDialog dialog; private Component dialogRootView; private OnDismissListener dismissListener; // UI组件 private Text txtErrorMsg; private Button btnConfirm; // 错误信息 private String errorMsg; /** * 弹窗关闭监听器 */ public interface OnDismissListener { void onDismiss(); } /** * 构造函数 */ public PayFailDialog(Context context) { this.context = context; initDialog(); } /** * 设置错误信息 */ public void setErrorMsg(String errorMsg) { this.errorMsg = errorMsg; updateErrorMsg(); } /** * 设置弹窗关闭监听器 */ public void setOnDismissListener(OnDismissListener listener) { this.dismissListener = listener; } /** * 初始化对话框 */ private void initDialog() { // 创建 CommonDialog dialog = new CommonDialog(context); // 加载自定义布局 dialogRootView = LayoutScatter.getInstance(context) .parse(ResourceTable.Layout_dialog_pay_fail, null, false); // 获取UI组件 txtErrorMsg = (Text) dialogRootView.findComponentById(ResourceTable.Id_txt_error_msg); btnConfirm = (Button) dialogRootView.findComponentById(ResourceTable.Id_btn_confirm); // 设置确认按钮点击事件 if (btnConfirm != null) { btnConfirm.setClickedListener(component -> { hide(); if (dismissListener != null) { dismissListener.onDismiss(); } }); } // 设置对话框内容 dialog.setContentCustomComponent(dialogRootView); // 设置对话框属性 dialog.setTransparent(true); // 设置透明背景 dialog.setSize(ComponentContainer.LayoutConfig.MATCH_PARENT, ComponentContainer.LayoutConfig.MATCH_PARENT); dialog.setAlignment(LayoutAlignment.CENTER); } /** * 更新错误信息显示 */ private void updateErrorMsg() { if (txtErrorMsg != null) { String msg = errorMsg != null && !errorMsg.isEmpty() ? errorMsg : "支付失败,请重试"; txtErrorMsg.setText(msg); } } /** * 显示对话框 */ public void show() { if (dialog != null) { dialog.show(); } } /** * 隐藏对话框 */ public void hide() { if (dismissListener != null) { dismissListener.onDismiss(); } if (dialog != null) { dialog.hide(); } } }