Kotlin if语句即使执行错误也是如此

我试图检查一个配置文件是否有一个图像的URL设置,如果是的话,加载到一个ImageView

 val hasImage = image != null && image.isNotBlank() if (hasImage) { Picasso.with(context).load(image).into(row.image) } 

image是可以空的字符串。 问题是,即使hasImage是false,它仍然加载图像,你可以看到:

WHYYYYY

但是,如果我做val hasImage = false它的行为如预期。

对于这里发生的事情,我感到非常困惑。 为什么if条件仍在执行?

可能是编译问题。 截图显示了一个不可能的场景。 你在哪里开始应用程序? 尝试重建,然后再次调试。 也尝试添加一些日志。

这不是由于您选择检查布尔表达式的方式…

如果图像是一个空字符串(“”),则布尔值将被评估为true,并执行if分支。 为了清楚起见,请相应地更改您的条件和/或使用此标准库函数:

 isNullOrBlank() 

https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/is-null-or-blank.html

喜欢这个:

 if (!image.isNullOrBlank()) { Picasso.with(context).load(image).into(row.image) }