2014-09-23 71 views
1

我做:科特林的Android,微调为setSelection没有解决

mySpinner.setSelection(myObj?.spinIdx) 

有:

var spinIdx: Int = 0 

,编译器抱怨 “无以下功能可以被称为” 与 为setSelection(诠释)在命题。为什么?

mySpinner.setSelection(myObj?.spinIdx as Int) 

解决了这个问题,但我不明白这里的编译器。

回答

5

myObj?.spinIdx返回nullmyObj为空时。阅读“安全电话”here。编辑失败,因为setSelection方法只接受Int,它不能是null

如何解决:

  1. 如果myObj可以null

    if (myObj != null) { mySpinner.setSelection(myObj.spinIdx) }

  2. 如果myObj不能null

    mySpinner.setSelection(myObj.spinIdx)

+3

或者'mySpinner.setSelection(myObj?.spinIdx?:0)'或'mySpinner.setSelection(myObj !!。spinIdx)'如果抛出一个NPE是可以接受的。 AFAIK后者等同于'as Int'的情况。 – maaartinus 2014-09-23 18:18:33