我一直在做一个应用程序,我有客户名单,我将客户列为一个列表(使用容器代替列表,代码名称解释如此)。从带有领先标签的列表中,我点击该项目,然后转到详细信息页面,在此处显示客户图片和其他信息。 这里是我的代码从URL(Amazon S3的桶)图像Codename one loading UrlImage issue
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;
}
有谁没有图像,首先,我看到的默认图像的客户。当我回到列表并再次点击同一个客户时,我没有显示图像。空白空间。相反,我在调试器窗口中收到错误消息。
[EDT] 0:0:0,1 - 例外:java.lang.IllegalArgumentException异常 - 创建 图像失败长度的给定的图像数据:306 java.lang.IllegalArgumentException异常:创建图像失败的给出 图像数据长度:306在 com.codename1.ui.Image.createImage(Image.java:655)在 com.codename1.ui.EncodedImage.getInternal(EncodedImage.java:366)在 com.codename1。 ui.EncodedImage.getInternalImpl(EncodedImage.java:341) at com.codename1.ui.EncodedImage.getWidth(EncodedImage.java:512)at com.codename1.ui.URLImage $ ScaleToFill.adaptImage(URLImage.java:116)在 com.codename1.ui.URLImage $ DownloadCompleted.actionPerformed(URLImage.java:239) at com.codename1.ui.URLImage $ 4.onSucess(URLImage.java:302)at com.codename1.ui.URLImage $ 4.onSucess (URLImage.java:298)at com.codename1.util.CallbackDispatcher.run(CallbackDispatcher.java:53) at com.codename1.ui.Display.processSerialCalls(Display.java:1155)at com.codename1.ui .Display.edtLoopImpl(Display.java:1099)在 com.codename1.ui.Display.mainEDTLoop(Display.java:1000)在 com.codename1.ui.RunnableWrapper.run(RunnableWrapper.java:120)在
com.codename1.impl.CodenameOneThread.run(CodenameOneThread.java:176)
再次回到列表并再次单击相同的客户时,我看到默认图像。 每次点击都会收到此错误消息。我完全迷失在这里。
据我所知,占位符图像将被显示,直到图像从url加载。在这种情况下,s3桶中没有图像。 由于我没有使用NetworkManager来检查204响应代码,因此无法确定图像是否已加载。我直接在URLImage中使用s3 url。
任何帮助将不胜感激。
谢谢。
嗨Sha,感谢您的反馈。我试图监视网络,我确实发现请求是在其他每次点击时完成的。我确实将客户ID作为图像名称保存到存储文件。假设客户ID是12345,我确实看到12345ImageURLTMP名称被添加到存储中。这是导致问题的原因。当我手动删除这两个名称,它工作正常。任何原因?谢谢。 – Ravimaran
TMP文件很好。在网络监视器中,您应该看到来自Amazon的响应,其中包含一条错误消息,读取错误消息。 –