HarmonyOS 关于openCustomDialog方法

import { promptAction } from '@kit.ArkUI'
let customDialogId: number = 0
@Builder
export function buildText() {
    Column() {
        Text('Custom dialog Message').fontSize(10)
        Row() {
            Button("确认").onClick(() => {
                promptAction.closeCustomDialog(customDialogId)
            })
            Blank().width(50)
            Button("取消").onClick(() => {
                promptAction.closeCustomDialog(customDialogId)
            })
        }
    }.height(200).padding(5)
} //自定义组件的内容


axiosClient.interceptors.response.use(
    async (response: AxiosResponse) => {
    let windowClass = await window.getLastWindow(getContext())
    let uiContext = windowClass.getUIContext()
    let promptAction = uiContext.getPromptAction();
    let contentNode = new ComponentContent(uiContext, wrapBuilder(buildText), 'data.message');
    promptAction.openCustomDialog(contentNode, {
        onWillDismiss: (dismissDialogAction: DismissDialogAction) => {
        console.info("reason" + JSON.stringify(dismissDialogAction.reason))
        console.log("dialog onWillDismiss")
    }
})
}

我在拦截器中做测试 无法弹出这个弹窗,这是因为什么原因呢

HarmonyOS
2天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
superinsect

需要手动获取UIContext,示例如下:

1、创建一个全局Context,GlobalContext.etx:

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、在【EntryAbility.ets --> onWindowStageCreate】中,获取主窗口:

GlobalContext.getContext().setObject("windowStage", windowStage);

3、调用:

let windowStage = GlobalContext.getContext().getObject("windowStage") as window.WindowStage
windowStage.getMainWindowSync().getUIContext().getPromptAction().showToast({
  message:'请求失败'
});
分享
微博
QQ
微信
回复
2天前
相关问题
HarmonyOS openCustomDialog问题
25浏览 • 1回复 待解决
HarmonyOS 关于AOP具体使用方法
485浏览 • 1回复 待解决
promptAction.openCustomDialog 全局弹窗
517浏览 • 1回复 待解决
关于私钥SHA256加签方法
210浏览 • 1回复 待解决
promptAction.openCustomDialog 自定义弹窗
366浏览 • 1回复 待解决