在可能为空的接收器types的数组列表中,只允许安全或非空的确定的呼叫

刚开始使用kotlin进行android开发。我的arraylist被声明为这样 –

var day1: ArrayList? = null 

现在我试图通过它的位置访问一个元素

  val dietPlan= day1[position] 

但我正在编译时间错误,

在可能为空的接收器types的数组列表中,只允许安全或非空的确定的呼叫

为什么我得到这个错误,我该如何解决?

3 Solutions collect form web for “在可能为空的接收器types的数组列表中,只允许安全或非空的确定的呼叫”

问题是,您将ArrayList定义为nullable 。 你有两个选择:

1)不要定义variablesnullable (这取决于你的代码): var day1: ArrayList = ArrayList()

2)访问你的数据结构与空检查: val dietPlan= day1?.get(position)

你告诉编译器你的variables可以是null(并且赋值为null)。

day1[position]基本上是day1.get(position) ,如果day1null ,它会和NPE一起崩溃 – > null.get(position)

如果你能保证day1将被初始化id建议lateinit或者直接分配新的Arraylist声明。 当然,简单的day1?.get(position)工作正常。

如定义的那样, day1可以为null但通过执行[]来调用函数,这与调用day1.get(index)基本相同。

这可以抛出一个NullpointerException ,Kotlin编译器试图预先处理。 因此,只允许这样的安全呼叫: day1?.get()

  • 已更新至Android Studio 3.0。 获取“Kotlin未配置”错误
  • 我可以调用API级别19中的Bundle#putString方法吗?
  • 如何在内核类的kotlin的初始化两个构造函数?
  • 无法获得Room DB与Kotlin一起运行
  • 将lambda直接分配给inheritance的抽象方法
  • 使用Kotlin在Android中添加数字
  • 在Kotlin中按多个字段排序收集
  • Firebase - 使用userProperty的RemoteConfig返回默认值
  • Android studio 3稳定版“房间1(RC)”的“app:kaptDebugKotlin”错误
  • 任何机会让CodeMirror在Android Chrome上玩?
  • 如何在Kotlin中制作一个双向转换器? (在Java中工作)
  • Kotlin language will be the best programming language for Android.