我知道已经问过这种类型的问题,但是它对我不起作用,所以请告诉我如何使以下代码正常工作:
if (a1!= null && a2!= null && message != null) {
if (intent!= null) {
Thread.sleep(5000)
ChangePicAsyncTask(context, message).execute(a1, a2) //Error line
}
}
此处“消息”是声明为私有var类级别的可为空的变量。在“ Thread.sleeep(..)”行下方,显示了该错误。我尝试进行if检查,但它也无法正常工作,因此请提供一些建议以解决该错误。
答案 0 :(得分:3)
变量message
在Thread.sleep()
之后可能已更改(例如变为null)。所以也许使用let。
message?.let {
Thread.sleep(5000)
ChangePicAsyncTask(context, it).execute(a1, a2)
}
答案 1 :(得分:0)
为确保其不变,您必须将其分配给最终变量,如下所示:
val a1 = a1
val a2 = a2
val message = message
if (a1 != null && a2 != null && message != null) {
if (intent!= null) {
Thread.sleep(5000)
ChangePicAsyncTask(context, message).execute(a1, a2) // Smart casts now work
}
}
如果这看起来很俗气,那么您可以使用方法described here。