HarmonyOS 鸿蒙Next ArkUi关于page之间传递PixelMap对象,在Image对象内无法显示的问题

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

HarmonyOS 鸿蒙Next ArkUi关于page之间传递PixelMap对象,在Image对象内无法显示的问题 在A页面通过router.push把params里的PixelMap对象(在A页面的Image组件里是可以正常展示的)传递给B页面,并且在B页面的aboutToAppear通过router.getParams()获取到了PixelMap对象,在Image组件里不显示,请问这该怎么解决,注:在B页面初始化的uri的时候已经创建一个空的PixelMap对象了,@State Uri: PixelMap = image.createPixelMap(new ArrayBuffer(5 * 5), {size: {height: 5, width: 5}}),但是还是无法在B页面显示图片


更多关于HarmonyOS 鸿蒙Next ArkUi关于page之间传递PixelMap对象,在Image对象内无法显示的问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

7 回复

楼主你好,我也遇到了这个问题,我查阅了官方文档,官方文档里是明确有写router的参数不能传递PixelMap对象,我试了很多解决办法想解决这个问题,后来是通过将PixelMap对象保存在了ArkTS提供的LocalStorage中实现了页面间共享PixelMap,而且这里好像还有一个坑,好像直接往localStorage里存PixelMap是不行的,反正我一直出现错误,最后是将PixelMap包在了数组里去存才解决了这个问题

屏幕截图 2023-10-17 230933.png

更多关于HarmonyOS 鸿蒙Next ArkUi关于page之间传递PixelMap对象,在Image对象内无法显示的问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


楼主你好,这种场景不建议通过传pixelmap,它是通过指针保存了一块内存地址,通过传参过去后接收的指针会改变,建议传图片的绝对路径,然后重新获取pixelmap对象。

可以问一下图片的PixelMap怎么获取的,

楼主你好,这个问题已经反馈给研发,请您耐心等待一下。

在A页面跳转B页面的时候在路由里传$r("app.media.XXXXXXX"),在B页面是可以展示的,偏偏PixelMap对象就不行,在B页面里定义uri的时候使用private Uri: any形式,也能展示$r资源,但也不能显示PixelMap对象里的图片,咋回事啊?问题出在哪里,有大佬清楚吗?

欢迎开发小伙伴们进来帮帮楼主

在HarmonyOS鸿蒙系统中,使用ArkUi进行页面间传递PixelMap对象并在Image对象内无法显示的问题,通常可能与PixelMap对象的序列化与反序列化、或者对象传递过程中的数据丢失有关。

确保PixelMap对象正确传递并在Image中显示,可以尝试以下方法:

  1. 确保PixelMap正确序列化:在发送页面,使用JSON.stringify或其他适合的方法将PixelMap对象转换为可传递的字符串格式。注意,PixelMap对象本身可能无法直接序列化,需要转换为Base64编码的字符串或其他可序列化的形式。

  2. 接收页面反序列化:在接收页面,将传递过来的字符串数据反序列化为PixelMap对象。这可能需要先将Base64编码的字符串解码为字节数组,再使用ArkUi提供的API将这些字节数组转换回PixelMap对象。

  3. 检查Image组件:确保Image组件正确设置了src属性,且该属性接收的是有效的PixelMap对象。

  4. 数据同步问题:如果数据是在异步操作中传递的,确保Image组件在数据加载完成后才进行渲染。

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

回到顶部