科特林的Android,微调为setSelection没有解决
问题描述:
我做:科特林的Android,微调为setSelection没有解决
mySpinner.setSelection(myObj?.spinIdx)
有:
var spinIdx: Int = 0
,编译器抱怨 “无以下功能可以被称为” 与 为setSelection(诠释)在命题。为什么?
mySpinner.setSelection(myObj?.spinIdx as Int)
解决了这个问题,但我不明白这里的编译器。
答
myObj?.spinIdx
返回null
当myObj
为空时。阅读“安全电话”here。编辑失败,因为setSelection
方法只接受Int
,它不能是null
。
如何解决:
-
如果
myObj
可以null
:if (myObj != null) { mySpinner.setSelection(myObj.spinIdx) }
-
如果
myObj
不能null
:mySpinner.setSelection(myObj.spinIdx)
或者'mySpinner.setSelection(myObj?.spinIdx?:0)'或'mySpinner.setSelection(myObj !!。spinIdx)'如果抛出一个NPE是可以接受的。 AFAIK后者等同于'as Int'的情况。 – maaartinus 2014-09-23 18:18:33