Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Studio中未解决的引用问题_Android_Kotlin - Fatal编程技术网

Android Studio中未解决的引用问题

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

我对使用Android Studio是新手。我用这个是因为我们的教授想让我们申请。我在YouTube上一步一步地关注教程,我知道我做了他在视频中所做的一切。但是为什么我有这个错误
未解决的引用: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)