Kotlin如果语句执行即使是假的

时间:2017-10-25 19:59:07

标签: android if-statement imageview kotlin

我正在尝试检查个人资料是否设置了图片网址,如果是,请将其加载到ImageView

val hasImage = image != null && image.isNotBlank()

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

image是一个可以为空的字符串。问题是,即使hasImage为假,它仍会加载图像,如您所见:

WHYYYYY

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

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

2 个答案:

答案 0 :(得分:4)

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

这不是因为您选择检查布尔表达式的方式......

答案 1 :(得分:1)

如果图像是空字符串(""),则布尔值将被计算为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)
}