HarmonyOS 鸿蒙Next 属性字符串无法通过router传递?

HarmonyOS 鸿蒙Next 属性字符串无法通过router传递?

@Entry
@Component
struct Index {
  textStyleAttrs: TextStyle =
    new TextStyle({ fontWeight: FontWeight.Bolder, fontSize: LengthMetrics.vp(24), fontStyle: FontStyle.Italic })
  mutableStyledString: MutableStyledString = new MutableStyledString("运动35分钟 目标达成", [
    {
      start: 2,
      length: 2,
      styledKey: StyledStringKey.FONT,
      styledValue: this.textStyleAttrs
    },
    {
      start: 7,
      length: 4,
      styledKey: StyledStringKey.FONT,
      styledValue: new TextStyle({ fontColor: Color.Orange, fontSize: LengthMetrics.vp(12) })
    }
  ]);
  controller: TextController = new TextController();

  build() {
    Column() {
      Text(undefined, { controller: this.controller })
        .margin({ top: 10 }).onAppear(() => {
        this.controller.setStyledString(this.mutableStyledString)
      })

      Button("跳转").onClick(() => {
        router.pushUrl({
          url: "pages/Second",
          params: {
            'mutableStyledString': this.mutableStyledString
          }
        })
      })
    }
  }
}

class Parmas {
  mutableStyledString?: MutableStyledString
}

@Entry
@Component
struct Second {
  params: Parmas = new Parmas();
  controller: TextController = new TextController();

  aboutToAppear(): void {
    this.params = router.getParams() as Parmas;
    console.log("1")
  }

  build() {
    Column() {
      // 显示属性字符串
      Text(undefined, { controller: this.controller })
        .margin({ top: 10 }).onAppear(() => {
        this.controller.setStyledString(this.params.mutableStyledString)
      })
    }
    .width('100%')
  }
}

更多关于HarmonyOS 鸿蒙Next 属性字符串无法通过router传递?的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

AppStorage来传递

import { LengthMetrics, router } from '@kit.ArkUI';

export class Param {
  mutableStyledString?: MutableStyledString
}

@Component
@Entry
struct Index {
  controller: TextController = new TextController();
  textStyleAttrs: TextStyle = 
    new TextStyle({ fontWeight: FontWeight.Bold, fontSize: LengthMetrics.vp(24), fontStyle: FontStyle.Italic })
  mutableStyledString: MutableStyledString = new MutableStyledString("运动35分钟 目标达成", [
    {
      start: 2,
      length: 2,
      styledKey: StyledStringKey.FONT,
      styledValue: this.textStyleAttrs
    },
    {
      start: 7,
      length: 4,
      styledKey: StyledStringKey.FONT,
      styledValue: new TextStyle({ fontColor: Color.Orange, fontSize: LengthMetrics.vp(12) })
    }
  ]);

  build() {
    Column() {
      Text(undefined, { controller: this.controller })
        .margin({ top: 10 }).onAppear(() => {
        this.controller.setStyledString(this.mutableStyledString)
      })

      Button("跳转").onClick(() => {
        let param = new Param()
        param.mutableStyledString = this.mutableStyledString
        AppStorage.setOrCreate('mutableStyledString', param)

        router.pushUrl({
          url: "pages/Second",
        })
      })
    }
  }
}

//Second.ets
import { Param } from './Index';

@Component
@Entry
struct Second {
  controller: TextController = new TextController();

  build() {
    Column() {
      // 显示属性字符串
      Text(undefined, { controller: this.controller })
        .margin({ top: 10 }).onAppear(() => {

        let param =  AppStorage.get<Param>('mutableStyledString')!
        this.controller.setStyledString(param.mutableStyledString)
      })
    }
    .width('100%')
    .height('100%')
  }
}

更多关于HarmonyOS 鸿蒙Next 属性字符串无法通过router传递?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


router不是已经废弃了吗? 官方推荐使用NavPathStack啊

在HarmonyOS(鸿蒙)系统中,如果你遇到属性字符串无法通过router传递的问题,这通常与数据传递机制或属性定义有关。以下是一些可能的原因及解决方法:

  1. 属性定义不匹配:确保你在发送端和接收端定义的属性名称和类型完全一致。任何微小的差异(如大小写、空格等)都可能导致属性无法正确传递。

  2. 数据序列化问题:鸿蒙系统可能使用特定的序列化机制来传递数据。如果属性字符串包含无法序列化的字符或格式,可能会导致传递失败。检查字符串内容是否符合序列化要求。

  3. Router配置错误:检查router的配置,确保发送端和接收端的路由地址、参数列表等配置正确无误。错误的配置可能导致数据无法正确路由到目标页面或组件。

  4. 系统限制:鸿蒙系统可能对通过router传递的数据大小或类型有限制。如果属性字符串过长或包含特殊类型的数据,可能无法传递。

  5. 版本兼容性问题:不同版本的鸿蒙系统可能存在差异,确保你的开发环境、目标设备和测试环境均使用兼容的版本。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部