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
用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传递的问题,这通常与数据传递机制或属性定义有关。以下是一些可能的原因及解决方法:
-
属性定义不匹配:确保你在发送端和接收端定义的属性名称和类型完全一致。任何微小的差异(如大小写、空格等)都可能导致属性无法正确传递。
-
数据序列化问题:鸿蒙系统可能使用特定的序列化机制来传递数据。如果属性字符串包含无法序列化的字符或格式,可能会导致传递失败。检查字符串内容是否符合序列化要求。
-
Router配置错误:检查router的配置,确保发送端和接收端的路由地址、参数列表等配置正确无误。错误的配置可能导致数据无法正确路由到目标页面或组件。
-
系统限制:鸿蒙系统可能对通过router传递的数据大小或类型有限制。如果属性字符串过长或包含特殊类型的数据,可能无法传递。
-
版本兼容性问题:不同版本的鸿蒙系统可能存在差异,确保你的开发环境、目标设备和测试环境均使用兼容的版本。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html,