【问题标题】:java.lang.IllegalArgumentException: Path must not be empty in Picassojava.lang.IllegalArgumentException:毕加索中的路径不能为空
【发布时间】:2021-06-04 19:22:48
【问题描述】:

我正在使用 Picasso 将 mysql DB 中的图像加载到自定义列表视图中。直接传递 URL 时正在加载图像,但是当我将 URL 分配给字符串并传递它时,它会抛出异常,说路径不能为空。

String imageStringUrl = md.Image;

图片字符串包含http://example.com/image.jpg

我正在像下面那样经过毕加索。

Picasso.get()
.load(imageStringUrl)
.into(iview);                                                           

当我这样通过时,我得到 java.lang.IllegalArgumentException: Path must not be empty。我已经尝试了下面的上述步骤,但图像没有加载。

Picasso.get()
.load(new File(imageStringUrl))
.into(iview);

上面的声明有什么问题?

【问题讨论】:

  • 根据错误Image 是空白不为空。你确定这有一个网址吗?
  • 你解决了这个问题吗?我觉得下面的答案都没有给出正确的答案
  • 不要试图打开链接。这是 NSFW。

标签: java android picasso


【解决方案1】:

我遇到了类似的问题。只需检查您的 URL 字符串是否为空。如果它为空,则给出默认图像或从 URL 加载。希望这会有所帮助。

if (image.isEmpty()) {
   iview.setImageResource(R.drawable.placeholder);
} else{
    Picasso.get().load(image).into(iview);
  }

【讨论】:

  • 如果数据未加载,这是制作另一张无图片的最佳方法,非常感谢
  • 检查我的答案,用这个 if 语句你仍然可以得到异常。
【解决方案2】:

只需通过首先修剪字符串路径来检查您的 url 字符串是否为空,但不要像 image.isEmpty() 那样检查,而是通过以下检查:

if (path.trim().length() == 0)

我检查了毕加索的代码,他们就是这样检查的。以下是他们代码库中的代码供参考:

public RequestCreator load(String path) {
    if (path == null) {
      return new RequestCreator(this, null, 0);
    }
    if (path.trim().length() == 0) {
      throw new IllegalArgumentException("Path must not be empty.");
    }
    return load(Uri.parse(path));
  }

【讨论】:

  • Strings.isEmpty 的工作方式如下:“public inline fun CharSequence.isEmpty(): Boolean = length == 0”。所以,我认为“修剪”与否无关
【解决方案3】:

我认为您的md.Image正在返回一个空字符串。所以尝试直接将你的image url 放入picasso,如下所示:

Picasso.get()
.load(" http://xxx.xxx.com/images/New%20folder/Desert.jpg.")
.into(imageView);

希望它有效。

【讨论】:

  • 这种解决方案不全,我们并不总是知道链接,有时链接在变量中所以请尝试给出更好的详细解释
【解决方案4】:

我有同样的问题,但我意识到我犯了一个简单的错误。

在我的代码中,我将图像 URL 保存在 sn-p 中,然后检索图像 URL,但那时我没有调用存储数据的 var ...

imagemRef.getDownloadUrl().addOnCompleteListener(new OnCompleteListener<Uri>() {
   @Override
   public void onComplete(@NonNull Task<Uri> task) {
    Uri url = task.getResult();
    
   urlImagemSelecionada = url.toString(); // This line I have forgot
   }
});

于是出现了消息java.lang.IllegalArgumentException: Path must not be empty in Picasso。因为参数真的是空的。

一些简单的事情,让我失去了 1 个小时。不过幸好现在已经解决了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多