未解决的参考:Kotlin中的findViewById

Kha*_*yam 7 android kotlin

fun Tryouts() {
var CheckBox1 : CheckBox = findViewById(R.id.ForwardBox) as CheckBox
CheckBox1.setChecked(false)
}
Run Code Online (Sandbox Code Playgroud)

我仍然是Kotlin的初学者,只学习了kotlin的基本工作,我无法引用任何Android小部件或在Android Studio中更改它的状态,无论是TextView还是CheckBox或RadioBox.
在所有情况下,findViewById的相同未解决参考错误...
我不知道我做错了什么,即使java转换输出相同的错误.

小智 10

这似乎是最容易摆脱的方法 findViewById ()

转到Build.Gradle(模块:应用程序)

添加以下行

apply plugin: 'kotlin-android-extensions'
Run Code Online (Sandbox Code Playgroud)
  • 然后它会要求你同步
  • 然后按同步

之后来到你的Activity文件说多了 MainActivity.kt

有导入要导入单个视图

import kotlinx.android.synthetic.main.<layout_name>.<view_name>;
Run Code Online (Sandbox Code Playgroud)

要么

导入所有视图

import kotlinx.android.synthetic.main.<layout_name>.*;
Run Code Online (Sandbox Code Playgroud)

示例:在您的布局中

<Checkbox id="@+/forwardBox" . .  . />
Run Code Online (Sandbox Code Playgroud)

它在activity_main布局中然后导入为

import kotlinx.android.synthetic.main.activity_main.forwardBox;
Run Code Online (Sandbox Code Playgroud)

所以在你的函数或类中直接使用它

forwardBox.isChecked = false
Run Code Online (Sandbox Code Playgroud)

  • “kotlin-android-extensions”已弃用 (3认同)

cha*_*l03 6

在 Kotlin 中,您不需要使用findViewById,只需使用 id ForwardBoxfrom kotlinx.android.synthetic.<your layout name>。kotlin 会自动找到代码中所有使用过的元素,并将其分配给与 layout(xml) 中的 id 相同的变量名称。

例如:

fun init(){
    ForwardBox.isChecked = false
}
Run Code Online (Sandbox Code Playgroud)


Ale*_*xTa 2

fun Tryouts() {
    val checkBox = findViewById(R.id.ForwardBox) as CheckBox
    checkBox.isChecked = false
}
Run Code Online (Sandbox Code Playgroud)

无论如何,请考虑用小写字母定义 ID,并用下划线分隔,例如:

val checkBox = findViewById(R.id.forward_box) as CheckBox
Run Code Online (Sandbox Code Playgroud)

  • 好吧,这并不能回答OP的问题:未解决的参考错误。 (3认同)