fun Tryouts() {
var CheckBox1 : CheckBox = findViewById(R.id.ForwardBox) as CheckBox
CheckBox1.setChecked(false)
}
我仍然是Kotlin的初学者,只学习了kotlin的基本工作,我无法引用任何Android小部件或在Android Studio中更改它的状态,无论是TextView还是CheckBox或RadioBox。
在所有情况下,findViewById的相同未解决参考错误...
我不知道我做错了什么,即使java转换输出相同的错误。
答案 0 :(得分:8)
这似乎是摆脱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
答案 1 :(得分:4)
在Kotlin中,您无需使用findViewById
,只需使用ForwardBox
中的ID kotlinx.android.synthetic.<your layout name>
即可。代码中的所有已使用元素都会被kotlin自动找到并分配给与布局(xml)中的ID相同的变量名。
例如:
fun init(){
ForwardBox.isChecked = false
}
答案 2 :(得分:3)
fun Tryouts() {
val checkBox = findViewById(R.id.ForwardBox) as CheckBox
checkBox.isChecked = false
}
无论如何,请考虑以下划线的小写形式定义您的ID,例如:
val checkBox = findViewById(R.id.forward_box) as CheckBox
答案 3 :(得分:0)
你的代码错了。请改成它。
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
答案 4 :(得分:0)
我遇到了同样的问题,原因是我在类之外意外地声明了该函数,而该类中的AppCompatActivity的findViewById方法不可用。
将其移回类的范围,并解决引用的问题。
答案 5 :(得分:0)
我是一个Android新手,以下更改解决了该问题。
useRef
答案 6 :(得分:0)
我遇到了完全相同的问题,问题是他们已经升级了所有内容以查看绑定,
尝试将其用作主类中的私有函数
class MainActivity : AppCompatActivity()
-在那里对我有用。
答案 7 :(得分:0)
在新版本的kotlin和/或android studio中,我只是做过:
plugins {
id 'com.android.application'
id 'kotlin-android'
id 'kotlin-android-extensions'
}
(在build.gradle [Module]文件顶部)
然后,我返回活动代码并写下按钮名称(btn_search),android studio完成了引用
import kotlinx.android.synthetic.main.activity_main.*