我有一个布尔标志,我必须func(有趣的动画和有趣的reAninimation - 它是两个drawable之间的过渡)。 这是两幅图之间的过渡
这堂课的想法是我有两面硬币。我把它添加到一个数组中。如果array为空,我只调用动画,如果它不为空,我首先调用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) 和项目已经停止
答案 0 :(得分:2)
你可以这样使用...因为null是不可能的,不建议列表或任何集合(没有数组),所以可以借助ArrayList实现你的解决方案
val arrayShape = ArrayList<Drawable>()
if (arrayShape.isEmpty())
Toast.makeText(this, "Array is Empty", Toast.LENGTH_LONG).show()
else
Toast.makeText(this, "Array is not Empty", Toast.LENGTH_LONG).show()
答案 1 :(得分:1)
你必须对数组使用安全调用,因为它可以为空。当它为null时也提供默认值。
if(arrayShape?.isEmpty() ?: true)