未解决的参考: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.
。 您的代码中的所有使用的元素会自动find,并通过kotlin分配给与layout(xml)中的id相同的variables名称。
例如:
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..;
要么
导入所有视图
import kotlinx.android.synthetic.main..*;
例如:在您的布局
它在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中,只需声明一个variables。 像: var abc
abc可以被任何types的对象初始化。
如果我们必须从布局上看待,那么我们必须写下:
findViewById(R.id.ForwardBox)
然后施展这个观点。
findViewById(R.id.ForwardBox) as CheckBox
然后存储在一个variables。
var CheckBox1 = findViewById(R.id.ForwardBox) as CheckBox