【发布时间】:2017-12-03 21:59:00
【问题描述】:
我有一个布尔标志,我必须 func (有趣的动画和有趣的 reAnimation - 它是两个可绘制对象之间的过渡)。 这是两张图之间的过渡
这门课的想法是我有硬币的两面。我将它添加到一个数组中。如果数组为空,我只调用动画,如果它不为空,我先调用reAnimation,然后再调用动画。
我的数组:
var arrayShape: Array<Drawable>? = null
它是 OnCreate 方法的一部分。
override OnCreate() ...
if(isArrayEmpty(arrayShape!!)) shapeReAnimation()
randomShape()
是标志方法
fun isArrayEmpty(array : Array<Drawable>):Boolean {
return array.size > 1 && array[0] !=null
}
还有一些未来有趣的 reAnimation() 现在应该显示一些 Toast。
fun shapeReAnimation() {
// if (arrayShape!![0] == resources.getDrawable(R.drawable.back_circle))
ToastUtils.showErorMessage(context, "first")
}
当我运行我的项目并单击 fShape 时,它会显示 NPE (kotlin.KotlinNullPointerException) 并且项目已经停止
【问题讨论】:
-
看起来您从未将
arrayShape设置为空值。不要在某事上使用!!,除非您 100% 确定它不为空。此外,array[0] != null将始终为真,因为Drawable不是可空类型(除非它是可空类型的棘手别名)。