HarmonyOS 鸿蒙Next router.back()无响应

发布于 1周前 作者 songsunli 来自 鸿蒙OS

HarmonyOS 鸿蒙Next router.back()无响应

router.back调用无响应,网络请求结果回来之后调用这个api返回上一页面无响应,之前系统是2.0.0.59时正常,升级到2.0.0.72之后无响应

2 回复

查看以下几种情况: 1、router.back()中是否传递参数,若有参数,请查看是否更改路径; 2、是否是router.back({ url: ‘/’ })写法,若url设置为特殊值"/"时不生效; 3、之前跳转是否使用的router.replaceUrl(),若是请修改为router.pushUrl(); 具体内容请看:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-router-V5#routerback 若以上问题都不存在,请提供相应代码和跳转目录方便定位。

子窗口和主窗口是两个独立的路由栈,子窗口中使用router.back()只能返回到子窗口的上一页。若需要子窗口跳转到主窗口,需要在子窗口中获取主窗口的路由栈之后进行跳转: 案例如下: 1.在entryAbility中通过AppStorage存windStage实例

onWindowStageCreate(windowStage: window.WindowStage): void {
// Main window is created, set main page for this ability
hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate');

AppStorage.setOrCreate<window.WindowStage>('stage',windowStage)

windowStage.loadContent('pages/Page', (err, data) => {
if (err.code) {
hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? '');
return;
}
hilog.info(0x0000, 'testTag', 'Succeeded in loading the content. Data: %{public}s', JSON.stringify(data) ?? '');
});
}

2.在子窗口的页面中获取到windowStage,然后通过windowStage获取到主窗口,依次获取到主窗口的UIContext对象,Router对象,最后进行跳转: 参考代码:子窗口加载的Page页

import window from '@ohos.window'

@Entry
@Component
struct Page1 {
  @State message: string = 'WindowPage'

  build() {
    Row() {
      Column() {
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
          .backgroundColor(Color.Blue)
          .onClick(() => {
            AppStorage.get<window.WindowStage>("stage")?.getMainWindowSync()
              .getUIContext()
              .getRouter()
              .pushUrl({
                url: "pages/PageB"
              })
          })
      }
      .width('100%')
    }
    .height('100%')
  }
}

更多关于HarmonyOS 鸿蒙Next router.back()无响应的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS(鸿蒙)系统中,router.back() 方法无响应的问题可能由多种因素导致。以下是一些可能的原因及解决方案的简要概述:

  1. 路由栈状态:首先确认当前页面是否已被正确推入路由栈中。如果页面未加入栈,则 router.back() 将无法找到前一个页面进行回退。

  2. 权限与配置:检查应用是否拥有必要的权限和正确的路由配置。错误的路由配置可能导致回退操作无效。

  3. 页面生命周期:确认页面在调用 router.back() 时是否处于可响应状态。例如,页面可能处于加载中或销毁状态,这些情况下回退操作可能无法执行。

  4. 系统资源:系统资源紧张(如内存不足)也可能导致路由回退操作无响应。检查系统资源使用情况,确保应用有足够的资源执行回退。

  5. 异步操作:如果 router.back() 是在异步操作中调用的,确保异步操作已完成且页面状态已更新。

如果上述检查均无误,但问题依旧存在,可能是系统或框架层面的bug。此时,建议直接联系鸿蒙系统的技术支持或官方客服进行进一步的排查和解决。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。

回到顶部