我有一个使用毕加索加载图像的取景器。数据库将返回一个URL的路径作为字符串。所以我有我的代码如下(使用Kotlin)
Picasso.with(context).load(url).error(placeholder).transform(transformation)
.placeholder(placeholder).into(this)
它加载正常。但是,有时候URL是空的。我希望它加载占位符代替。但它崩溃了如下
java.lang.IllegalArgumentException: Path must not be empty.
at com.squareup.picasso.Picasso.load(Picasso.java:297)
这将迫使我显式地执行检查,这是不理想的
if (url == null || url.isEmpty()) {
Picasso.with(context).load(placeholder).transform(transformation).into(this)
} else {
Picasso.with(context).load(url).error(placeholder).transform(transformation)
.placeholder(placeholder).into(this)
}
当URL字符串为空而不是加载占位符时,Picasso会崩溃吗?
8条答案
按热度按时间vsaztqbk1#
这可能太晚了,但我今天遇到了这个错误,在阅读了Picasso#加载方法的文档后,它指出传递空字符串将导致该方法抛出
IllegalArgumentException
,传递null不会抛出异常,但会触发RequestCreator#错误,如果提供了错误图像,则会加载错误图像,否则目标将不显示任何内容。如果你没有控制这图象网址(说它来自服务器)你能尝试这下面:
vnjpjtjt2#
javadoc for Picasso.load()显式声明当URL为null或空时,它将抛出一个IllegalArgumentException异常,这就是我们所期望的。
uajslkp63#
我希望它能帮助你:
vlf7wbxs4#
它晚了,但我遇到了同样的问题,我解决了只是通过一个URI,而不是网址。只是通过你的网址一样
Uri.parse(url)
。会是这样的
tyu7yeag5#
我建议你在载入毕加索之前检查一下绳子。
pvabu6sv6#
警告:检查url字符串是否为空是不够的
你应该先修剪url字符串,然后再做空检查。否则像
" "
这样的字符串可能会破坏你的应用程序。我就是这么用的。
检查毕加索的源代码来了解原因。
关于该专题的讨论:https://github.com/square/picasso/issues/609
yzckvree7#
您可以使用以下方法检查url是否为空
源URL验证:How to check if URL is valid in Android
3htmauhk8#
是的,picasso需要非空值,所以我建议使用帮助器TextUtils来处理这个问题。这里是一个例子。