繁体   English   中英

未解决的参考:Kotlin 中的 findViewById

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM