在Kotlin Android中出现"未解决的引用"错误

3

我有一段代码:

package com.example.admin.maytinh

import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import com.example.admin.maytinh.R.id.button
import com.example.admin.maytinh.R.id.editText
import com.example.admin.maytinh.R.id.editText2
import com.example.admin.maytinh.R.id.editText3


class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        button.setOnClickListener(View.OnClickListener{xuly()})
    }

    public fun xuly(){
        val a:Int = editText.text.ToString().ToInt()
        val b:Int = editText2.text.ToString().ToInt()
        val c:Int = a + b
        editText3.text = c.ToString()
    }

}

当我运行它时,我收到以下错误信息:
  • 未解决的引用setOnClickListener
  • 未解决的引用:text
  • 未解决的引用:ToString
请问有谁能为我解释一下这是为什么,并修复它呢?谢谢。

你在哪里实例化按钮?例如 button = findViewById(R.id.button)?对于 editTexts 也是一样吗? - Andrey Danilov
我添加了代码,但出现了错误:“未解决的引用:text”,“未解决的引用:ToString”。 - user6845458
4个回答

12

你导入的是id而不是视图。

import com.example.admin.maytinh.R.id.button
import com.example.admin.maytinh.R.id.editText
import com.example.admin.maytinh.R.id.editText2
import com.example.admin.maytinh.R.id.editText3

使用这个:

import kotlinx.android.synthetic.main.activity_main.*

然后在应用gradle文件中添加插件:

apply plugin: 'kotlin-android-extensions'

对于RecyclerView.ViewHolder https://dev59.com/e1wX5IYBdhLWcg3w2igu#33428208 - Qamar
问题是为什么我的Android Studio没有自动添加它?为什么我需要手动添加它? - Freddy Daniel

4

你得到了一个未解决的错误,因为你没有导入视图。你导入了ids而不是视图。

要导入单个视图,请使用import语句:

import kotlinx.android.synthetic.main.<layout_name>.<view_name>;

或者

为了导入特定布局的所有小部件属性

import kotlinx.android.synthetic.main.<layout>.*

您需要做的是在您模块的build.gradle文件中启用Android Extensions Gradle插件:
apply plugin: 'kotlin-android-extensions'

2

看起来您正在尝试使用Kotlin Android扩展。 为此,请导入:

import kotlinx.android.synthetic.main.activity_main.*

代替
import com.example.admin.maytinh.R.id.button
import com.example.admin.maytinh.R.id.editText
import com.example.admin.maytinh.R.id.editText2
import com.example.admin.maytinh.R.id.editText3

花几分钟时间阅读KAE的工作原理 - 这将对您有很大帮助。

此外,没有ToString()ToInt()这样的方法。您要找的是:toString()toInt()


0

我即使使用迁移至 ViewBinding 仍然遇到了同样的问题。原来问题是我错误地将 webview 的 XML id 设为与其所在布局相同。我花了一个周末来解决它。我想分享这个经验可能对其他人有用。

enter image description here


如何导入 com.android.tools.lint lint-27.2.1.jar - CS QGB

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接