如何确定数组是否为空?

时间:2017-12-03 21:59:00

标签: android arrays kotlin

我有一个布尔标志,我必须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) 和项目已经停止

2 个答案:

答案 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)