未解决的参考:Kotlin中的findViewById

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

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

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

例如:

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

无论如何,考虑以小写字母分隔下划线来定义您的ID,例如:

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

看来这是摆脱findViewById ()最简单的方法

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

添加以下行

 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 

你的代码是错误的。 请把它改成这个。

 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