2017-05-25 260 views
5
fun Tryouts() { 
var CheckBox1 : CheckBox = findViewById(R.id.ForwardBox) as CheckBox 
CheckBox1.setChecked(false) 
} 

我仍然在科特林初學者已經學會只科特林的基本工作,我無法指任何Android小工具或改變它的狀態Android Studio中無論是TextView的或複選框或RadioBox。
在所有情況下,對於findViewById都有同樣的未解決的引用錯誤...
我不知道我做錯了什麼,即使是java轉換也會輸出相同的錯誤。未解決參考:findViewById在科特林

+1

作爲一個方面說明,我建議考慮看看[科特林的Android擴展(https://kotlinlang.org/docs/tutorials/android-plugin.html),消除了'findViewById的需求( )' –

回答

3
fun Tryouts() { 
    val checkBox = findViewById(R.id.ForwardBox) as CheckBox 
    checkBox.isChecked = false 
} 

無論如何,考慮小寫用下劃線separed定義您的ID,例如:

val checkBox = findViewById(R.id.forward_box) as CheckBox 
+0

我猜** val **在這種情況下更好 – DEADMC

+0

@DEADMC你是對的 – AlexTa

+0

嗯,這並不回答OP的問題:未解決的參考錯誤。 – Naetmul

4

在科特林你不需要使用findViewById,只需用ID ForwardBoxkotlinx.android.synthetic.<your layout name>。您的代碼中所有使用的元素都會自動找到並由kotlin分配給與layout(xml)中的ids相同的變量名稱。

例如:

fun init(){ 
    ForwardBox.isChecked = false 
} 
3

看來這是最簡單的方法來擺脫findViewById()

轉到您的build.gradle(模塊:APP)

添加以下行

apply plugin: 'kotlin-android-extensions' 
  • 然後,它會問你要同步
  • 然後按同步

之後來到你的活動文件說出來很多是MainActivity.kt

有進口 要導入單一視圖

import kotlinx.android.synthetic.main.<layout_name>.<view_name>; 

要導入所有視圖

import kotlinx.android.synthetic.main.<layout_name>.*; 

實施例: 在佈局

<Checkbox id="@+/forwardBox" . . . /> 

它在activity_main佈局 然後導入作爲

import kotlinx.android.synthetic.main.activity_main.forwardBox; 

所以無論是在你的函數或類直接使用它

forwardBox.isChecked = false 
0

您的c頌歌是錯誤的。請將其更改爲此。

fun Tryouts() { 
    var CheckBox1 = findViewById(R.id.ForwardBox) as CheckBox 
    CheckBox1.setChecked(false) 
} 

在Kotlin中,只聲明一個變量。像:var abc

abc可以被任何類型的對象初始化。

如果我們要採取從佈局視圖,則我們必須寫:

findViewById(R.id.ForwardBox) 

然後抹上了這一觀點。

findViewById(R.id.ForwardBox) as CheckBox 

然後存儲在一個變量中。

var CheckBox1 = findViewById(R.id.ForwardBox) as CheckBox