HarmonyOS 鸿蒙Next pushPathByName中的第二个参数传入特殊字符串导致异常

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

HarmonyOS 鸿蒙Next pushPathByName中的第二个参数传入特殊字符串导致异常

pushPathByName中的第二个参数传入特殊字符串(`{"user":"","birthday":"","sex":"男","Marital_status":false,"work_address":"0"}`)导致异常,pushPathByName是navigation路由的方法
2 回复

demo中传入问题的字符串未发现异常

@Entry
@Component
struct NavigationExample {
  pageInfo: NavPathStack = new NavPathStack()

  @Builder
  pageMap(name: string) {
    if (name === 'pageOne') {
      PageOne()
    } else if (name === 'pageTwo') {
      PageTwo()
    }
  }

  build() {
    Navigation(this.pageInfo) {
      Column() {
        Button('StartTest', { stateEffect: true, type: ButtonType.Capsule })
          .width('80%')
          .height(40)
          .margin(20)
          .onClick(() => {
            this.pageInfo.pushPath({ name: 'pageOne' });
          })
      }
    }
    .title('NavIndex')
    .navDestination(this.pageMap)
  }
}

// PageOne.ets

class TmpClass {
  test: string =
    '<?ovital_ct name="ovital_sample"?>{"user":"","birthday":"","sex":"男","Marital_status":false,"work_address":"0"}'
}

@Component
export struct PageOne {
  pageInfo: NavPathStack = new NavPathStack();
  @State message: string = 'Hello World'

  build() {
    NavDestination() {
      Column() {
        Text(this.message)
          .width('80%')
          .height(50)
          .margin(10)

        Button('pushPathByName', { stateEffect: true, type: ButtonType.Capsule })
          .width('80%')
          .height(40)
          .margin(10)
          .onClick(() => {
            let tmp = new TmpClass()
            this.pageInfo.pushPathByName('pageTwo', tmp, (popInfo) => {
              this.message =
                '[pushPathByName]last page is: ' + popInfo.info.name + ', result: ' + JSON.stringify(popInfo.result);
            });
          })

      }.width('100%').height('100%')
    }.title('pageOne')
    .onReady((context: NavDestinationContext) => {
      this.pageInfo = context.pathStack;
    })
  }
}

// PageTwo.ets
@Component
export struct PageTwo {
  pathStack: NavPathStack = new NavPathStack()

  build() {
    NavDestination() {
      Column() {
        Button('popToName', { stateEffect: true, type: ButtonType.Capsule })
          .width('80%')
          .height(40)
          .margin(20)
          .onClick(() => {
            this.pathStack.popToName('pageOne'); // 将第一个名为name的NavDestination页面移到栈顶,将处理结果传入push的onPop回调中。
          })
      }.width('100%').height('100%')
    }.title('pageTwo')
    .onReady((context: NavDestinationContext) => {
      this.pathStack = context.pathStack
      console.log(JSON.stringify(this.pathStack.getParamByName('pageTwo')))
    })
  }
}

更多关于HarmonyOS 鸿蒙Next pushPathByName中的第二个参数传入特殊字符串导致异常的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS(鸿蒙)系统中,pushPathByName函数通常用于在对象路径树中查找或创建对象,并设置其属性。针对你提到的“第二个参数传入特殊字符串导致异常”的问题,这里有几个可能的解释和解决方案(注意,不涉及Java或C语言):

  1. 参数格式错误:特殊字符串可能包含系统不支持的字符或格式,导致解析错误。检查特殊字符串是否符合系统要求的格式规范。

  2. 资源限制:某些特殊字符串可能因长度过长或包含大量复杂字符而超出系统处理能力,导致资源分配失败或异常。尝试简化字符串或使用较短的替代字符串。

  3. 权限问题:如果特殊字符串指向的路径或对象需要特定权限才能访问或修改,而当前上下文没有足够的权限,则可能导致异常。确认当前用户或进程是否拥有必要的权限。

  4. 系统Bug:在某些情况下,异常可能是由系统本身的Bug引起的。如果上述检查均无果,且问题持续存在,可能是系统层面的问题。

如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html 。在那里,你可以获得更专业的技术支持和解决方案。

回到顶部