【问题标题】:How to find out if an array is empty?如何判断一个数组是否为空?
【发布时间】: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 不是可空类型(除非它是可空类型的棘手别名)。

标签: android arrays kotlin


【解决方案1】:

你可以这样使用......因为 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()

【讨论】:

    【解决方案2】:

    您必须对数组使用安全调用,因为它可以为空。为空时也提供一个默认值。

    if(arrayShape?.isEmpty() ?: true)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-20
      • 2012-03-15
      • 2014-07-18
      • 2017-03-05
      • 2013-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多