PayFailDialog.java 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. package com.fujica.abk.component;
  2. import com.fujica.abk.ResourceTable;
  3. import ohos.agp.components.*;
  4. import ohos.agp.utils.LayoutAlignment;
  5. import ohos.agp.window.dialog.CommonDialog;
  6. import ohos.app.Context;
  7. /**
  8. * 支付失败弹窗
  9. */
  10. public class PayFailDialog {
  11. private Context context;
  12. private CommonDialog dialog;
  13. private Component dialogRootView;
  14. private OnDismissListener dismissListener;
  15. // UI组件
  16. private Text txtErrorMsg;
  17. private Button btnConfirm;
  18. // 错误信息
  19. private String errorMsg;
  20. /**
  21. * 弹窗关闭监听器
  22. */
  23. public interface OnDismissListener {
  24. void onDismiss();
  25. }
  26. /**
  27. * 构造函数
  28. */
  29. public PayFailDialog(Context context) {
  30. this.context = context;
  31. initDialog();
  32. }
  33. /**
  34. * 设置错误信息
  35. */
  36. public void setErrorMsg(String errorMsg) {
  37. this.errorMsg = errorMsg;
  38. updateErrorMsg();
  39. }
  40. /**
  41. * 设置弹窗关闭监听器
  42. */
  43. public void setOnDismissListener(OnDismissListener listener) {
  44. this.dismissListener = listener;
  45. }
  46. /**
  47. * 初始化对话框
  48. */
  49. private void initDialog() {
  50. // 创建 CommonDialog
  51. dialog = new CommonDialog(context);
  52. // 加载自定义布局
  53. dialogRootView = LayoutScatter.getInstance(context)
  54. .parse(ResourceTable.Layout_dialog_pay_fail, null, false);
  55. // 获取UI组件
  56. txtErrorMsg = (Text) dialogRootView.findComponentById(ResourceTable.Id_txt_error_msg);
  57. btnConfirm = (Button) dialogRootView.findComponentById(ResourceTable.Id_btn_confirm);
  58. // 设置确认按钮点击事件
  59. if (btnConfirm != null) {
  60. btnConfirm.setClickedListener(component -> {
  61. hide();
  62. if (dismissListener != null) {
  63. dismissListener.onDismiss();
  64. }
  65. });
  66. }
  67. // 设置对话框内容
  68. dialog.setContentCustomComponent(dialogRootView);
  69. // 设置对话框属性
  70. dialog.setTransparent(true); // 设置透明背景
  71. dialog.setSize(ComponentContainer.LayoutConfig.MATCH_PARENT,
  72. ComponentContainer.LayoutConfig.MATCH_PARENT);
  73. dialog.setAlignment(LayoutAlignment.CENTER);
  74. }
  75. /**
  76. * 更新错误信息显示
  77. */
  78. private void updateErrorMsg() {
  79. if (txtErrorMsg != null) {
  80. String msg = errorMsg != null && !errorMsg.isEmpty() ? errorMsg : "支付失败,请重试";
  81. txtErrorMsg.setText(msg);
  82. }
  83. }
  84. /**
  85. * 显示对话框
  86. */
  87. public void show() {
  88. if (dialog != null) {
  89. dialog.show();
  90. }
  91. }
  92. /**
  93. * 隐藏对话框
  94. */
  95. public void hide() {
  96. if (dismissListener != null) {
  97. dismissListener.onDismiss();
  98. }
  99. if (dialog != null) {
  100. dialog.hide();
  101. }
  102. }
  103. }