Codenameone 代码名1加载UrlImage问题

Codenameone 代码名1加载UrlImage问题,codenameone,Codenameone,我一直在开发一个应用程序,我有一个客户列表,我将客户显示为一个列表(使用容器而不是代码名1中解释的列表)。从带有前导标签的列表中,我单击该项目,它进入详细信息页面,在该页面中我显示客户图片和其他信息。 下面是我从url获取图像的代码(AmazonS3 bucket) 有些客户一开始没有图像,我确实看到了默认图像。当我返回列表并再次单击同一客户时,没有显示任何图像。空白。相反,我在调试器窗口中得到以下错误消息 [EDT]0:0:0,1-异常:java.lang.IllegalArgumentExc

我一直在开发一个应用程序,我有一个客户列表,我将客户显示为一个列表(使用容器而不是代码名1中解释的列表)。从带有前导标签的列表中,我单击该项目,它进入详细信息页面,在该页面中我显示客户图片和其他信息。 下面是我从url获取图像的代码(AmazonS3 bucket)

有些客户一开始没有图像,我确实看到了默认图像。当我返回列表并再次单击同一客户时,没有显示任何图像。空白。相反,我在调试器窗口中得到以下错误消息

[EDT]0:0:0,1-异常:java.lang.IllegalArgumentException-创建 对于长度为306的给定图像数据,图像失败 java.lang.IllegalArgumentException:为给定的 图像数据长度:306 at com.codename1.ui.Image.createImage(Image.java:655)位于 com.codename1.ui.EncodedImage.getInternal(EncodedImage.java:366)位于 com.codename1.ui.EncodedImage.getInternalImpl(EncodedImage.java:341) 位于com.codename1.ui.EncodedImage.getWidth(EncodedImage.java:512) com.codename1.ui.urlmimage$ScaleToFill.adaptImage(urlmimage.java:116)位于 com.codename1.ui.URLImage$DownloadCompleted.actionPerformed(URLImage.java:239) 在com.codename1.ui.URLImage$4.onsuces(URLImage.java:302)上 com.codename1.ui.URLImage$4.onsuces(URLImage.java:298)位于 com.codename1.util.CallbackDispatcher.run(CallbackDispatcher.java:53) 在com.codename1.ui.Display.processSerialCalls(Display.java:1155)中 com.codename1.ui.Display.edtlopimpl(Display.java:1099)位于 com.codename1.ui.Display.mainedCloop(Display.java:1000)位于 com.codename1.ui.runnablerrapper.run(runnablerrapper.java:120)位于
com.codename1.impl.CodenameOneThread.run(CodenameOneThread.java:176)

再次返回列表并再次单击同一客户时,我确实看到了默认图像。 我每隔一次点击就会收到这个错误消息。我在这里完全迷路了

我知道占位符图像将一直显示,直到图像从url加载。在这种情况下,s3存储桶中没有图像。 由于我没有使用NetworkManager检查204响应代码,因此无法确定映像是否已加载。我直接将S3URL与URLImage一起使用

任何帮助都将不胜感激


谢谢。

清除本地存储以确保图像已下载。打开网络监视器并查看结果。306字节似乎是图像的错误大小,所以我猜您从amazon收到一条错误消息,并试图将其作为图像读取


如果打开网络监视器,您应该能够检查发送的请求和响应,并查看请求失败的原因。

您好,谢谢您的反馈。我曾尝试监控网络,但我确实看到每隔一次单击都会发出请求。我确实将客户id作为映像名保存到存储文件中。假设客户id为12345,我确实看到12345ImageURLTMP名称被添加到存储中。这就是问题的根源。当我手动删除这两个名称时,效果很好。有什么原因吗?谢谢。TMP文件很好。在网络监视器中,您应该看到来自Amazon的响应,其中包含一条错误消息读取错误消息。
private Image getUserProfilePicture(String imgName)
{
Image defaultImage = FromResource("DefaultPhoto.png");
int width = defaultImage.getWidth();
int height = defaultImage.getHeight();

String imgUrl = "image from s3 bucket";
EncodedImage placeHolder = (EncodedImage)defaultImage;
Image roundMask = Image.createImage(width, height, 0xff000000);
Graphics gr = roundMask.getGraphics();
gr.setColor(0xffffff);
gr.fillArc(0, 0, width, height, 0, 360);
URLImage.ImageAdapter ada = URLImage.createMaskAdapter(placeHolder);
//image is deleted from storage before load
Image profileImage = URLImage.createToStorage(placeHolder, imgName, 
imgUrl, ada);
return profileImage;
}