![](/img/trans.png)
[英]unresolved reference: text - Android Studio + Kotlin (findViewById fault?)
[英]Unresolved Reference: findViewById in Kotlin
fun Tryouts() {
var CheckBox1 : CheckBox = findViewById(R.id.ForwardBox) as CheckBox
CheckBox1.setChecked(false)
}
我仍然是 Kotlin 的初学者,只学习了 kotlin 的基本工作,我无法参考任何 android 小部件或在 Android Studio 中更改它的状态,无论是 TextView、CheckBox 还是 RadioBox。
在所有情况下 findViewById 的相同未解决的参考错误...
我不知道我做错了什么,即使是 java 转换也会输出相同的错误。
看来这是摆脱findViewById ()
的最简单方法
转到您的 Build.Gradle(模块:app)
添加以下行
apply plugin: 'kotlin-android-extensions'
之后来到你的活动文件说它很多是MainActivity.kt
有 import 导入单个视图
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
在 Kotlin 中,您不需要使用findViewById
,只需使用kotlinx.android.synthetic.<your layout name>
id ForwardBox
。 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
你的代码是错误的。 请改成这个。
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
我遇到了完全相同的问题,问题是他们已经升级了所有内容以查看绑定,尝试将其用作主class MainActivity : AppCompatActivity()
的私有函数class MainActivity : AppCompatActivity()
- 它对我有用。
我遇到了同样的问题,原因是我不小心在类之外声明了该函数,其中 AppCompatActivity 的 findViewById 方法不可用。
将其移回类的范围并解析引用。
对我来说,我是 android 新手,下面的更改解决了这个问题。
var CheckBox1 = findViewById<CheckBox>(R.id.ForwardBox)
在 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.*
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.