使用uiContext.getRouter().pushUrl在工具类中实现页面跳转失败

我在工具类中使用UIContext.getRouter()去进行页面跳转,结果跳转失败,不知道问题出在哪里。

instance.interceptors.response.use((response: AxiosResponse)=>{

  if(response.data.result =='1'){
    toast.show(response.data.msg)
    const uicontext: UIContext = AppStorage.get('UIcontext') as UIcontext
    uicontext.getRouter().pushUrl({ url: 'pages/userLogin' })
    return Promise.reject(response.data)
  }

  logger.info('succeed'JsoN.stringify(response.data))
  return response.data

},(error:AxiosError)=>{}

UIContext我是在EntryAbility中的生命周期中获取的。

onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
    try {
      this.context.getApplicationContext().setColorMode(ConfigurationConstant.ColorMode.COLOR_MODE_NOT_SET);
      AppStorage.setOrCreate('UIContext', this.context)
    } catch (err) {
      hilog.error(DOMAIN, 'testTag', 'Failed to set colorMode. Cause: %{public}s', JSON.stringify(err));
    }
    hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onCreate');
  }
HarmonyOS
2025-10-20 11:42:27
浏览
收藏 0
回答 2
待解决
回答 2
按赞同
/
按时间
auhgnixgnahz

1.检查一下'pages/userLogin'注册了没

2.ability获取context 

this.uiContext= windowStage.getMainWindowSync().getUIContext()

3.检查都没问题,贴报错日志

分享
微博
QQ
微信
回复
2025-10-21 14:23:58
hm688c720522a51

问题所在:UIContext获取有问题。

如果直接在EntryAbility中通过this.context方式获取到的,是UIAbilityContext,并非UIContext。即便在工具类中获取的时候通过as的方式让编译器判断为UIContext,但是依旧无法调用getRouter()方法,运行会报错。

正确的获取UIContext的方式应该是:

onWindowStageCreate(windowStage: window.WindowStage): void {

    // Main window is created, set main page for this ability

    hilog.info(DOMAIN, 'testTag', '%{public}s', 'Ability onWindowStageCreate');

    windowStage.loadContent('pages/Index', (err) => {

      //============================//

      let context = windowStage.getMainWindowSync().getUIContext()

      AppStorage.setOrCreate('UIContext', context)

      //===========================//

      if (err.code) {

        hilog.error(DOMAIN, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err));

        return;

      }

      hilog.info(DOMAIN, 'testTag', 'Succeeded in loading the content.');

    });

  }


分享
微博
QQ
微信
回复
2025-10-22 10:29:20
相关问题
工具里 怎么跳转或打开页面呢?
5106浏览 • 1回复 待解决
如何在工具获取Context
3259浏览 • 1回复 待解决
日志工具使用方法
1625浏览 • 1回复 待解决
HarmonyOS 开发需要的工具
1513浏览 • 1回复 待解决
HarmonyOS router.pushUrl跳转报100002
2061浏览 • 1回复 待解决
HarmonyOS模拟器跳转页面没反应
1512浏览 • 1回复 待解决
preferences工具封装
2620浏览 • 1回复 待解决
hdc命令git bash命令工具不可使用
1458浏览 • 1回复 待解决