2014-09-23 62 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