Android Studio中未解决的引用问题
我对使用Android Studio是新手。我用这个是因为我们的教授想让我们申请。我在YouTube上一步一步地关注教程,我知道我做了他在视频中所做的一切。但是为什么我有这个错误Android Studio中未解决的引用问题,android,kotlin,Android,Kotlin,我对使用Android Studio是新手。我用这个是因为我们的教授想让我们申请。我在YouTube上一步一步地关注教程,我知道我做了他在视频中所做的一切。但是为什么我有这个错误未解决的引用:nextractivity 以下是MainActivity.kt中的代码 package com.willitpush.app import androidx.appcompat.app.AppCompatActivity import android.os.Bundle class MainActiv
未解决的引用:nextractivity
以下是MainActivity.kt中的代码
package com.willitpush.app
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
nextActivity.setOnClickListener{
}
}
}
下面是activity_main.xml上的代码
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<Button
android:id="@+id/nextActivity"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:backgroundTint="#2196F3"
android:text="play"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
正如您所看到的,应该没有错误,因为我输入了相同的id。但为什么我在这一行有错误
nextractivity.setOnClickListener
。很抱歉,我是Android Studio的新手。未解析引用表示您引用的是不存在的东西,比如未声明的变量名,或者至少编译器不知道,从您的代码中nextractivity
没有在代码中的任何地方声明,因此编译器会说“好的,这是什么?”
Stanislav向您展示的是启用“Kotlin合成绑定”的插件,它基本上是一种神奇的代码,可以在布局XML文件中转换您声明的id(如android:id=“@+id/nextractivity”
按钮中的)在Activity
类中的一个变量中,使用与ID相同的名称。因此,即使您没有在任何地方声明val-nextActivity:Button
,合成词也添加了它,因此您可以像在示例中一样引用它。没有合成材料,它就不会工作
不要担心不理解所有这些,当你知道它在那里以及它是如何工作的时候,这种魔法是很棒的,对于初学者来说,它令人难以置信地困惑。查找按钮
(或任何视图
)的正常方法是
val nextActivity=findViewById(R.id.nextActivity)
Kotlin synthetics现在已被弃用,您应该改用ViewBinding
库。老实说,如果你是新来的,我会使用findviewbyd
,这样你就可以习惯事物的总体概念-你会学到很多!您可以稍后使用奇特的自动化功能可能您错过了关于插件的步骤:“kotlin android extensions”
@StanislavBondar没有这样做的步骤,但我该如何做?这是否回答了您的问题?好的,我明白了,谢谢你,这对我很有效耶!
val nextActivity = findViewById<Button>(R.id.nextActivity)