android 为什么它仍然说“未解决的引用:按钮”即使我在xml中有按钮id?

3htmauhk  于 2023-06-04  发布在  Android
关注(0)|答案(4)|浏览(311)

我有一个简单的Android应用程序,我想点击按钮来传递其他活动。但上面说
未解析的引用:按钮
即使我在XML中给予ID。我不知道我错在哪里。

截图:

activity_main.xml:

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/button"
    android:text="Click"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

main_activity:

class MainActivity : AppCompatActivity() {

companion object {
const val USER = "user"
 }

 override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    val user = User( "mayk",   "qqqq", PersonalInfo("mayk", "james"))

    button.setOnClickListener{
        val intent = Intent (this, Activity2::class.java)
        intent.putExtra(USER, user)
        startActivity(intent)
    }
   }
   }
tf7tbtn2

tf7tbtn21#

val button = findViewById<View>(R.id.button)
34gzjxbg

34gzjxbg2#

为什么还说“未解决的引用:按钮”即使我在xml中有按钮id?
xml布局文件中的id不是Kotlin变量。你需要声明一个变量val button,然后才能使用它。您还需要初始化变量以引用Button对象。一种方法是

val button = findViewById<View>(R.id.button)

我建议你阅读https://d.android.com上的初学者指南,以了解Android编程的基础知识。

elcex8rz

elcex8rz3#

不需要使用findViewById()
转到您的Build.Gradle(模块:app)添加以下行

apply plugin: 'kotlin-android-extensions'

id 'kotlin-android-extensions'

然后它会要求你同步然后按同步后,它会要求你导入,只有使用ALT+ENTER

更新:此解决方案已弃用

现在必须使用视图绑定
在模块级build.gradle文件中将viewBinding构建选项设置为true

android {
...
buildFeatures {
    viewBinding true
    }
}

要设置绑定类的示例以供Activity使用,请在Activity的onCreate()方法中执行以下步骤:

private lateinit var binding: ActivityMainBinding

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    binding = ResultProfileBinding.inflate(layoutInflater)
    val view = binding.root
    setContentView(view)
}

现在,您可以使用绑定类的示例来引用任何视图:

binding.name.text = viewModel.name
binding.button.setOnClickListener { viewModel.userClicked() }

有关详细信息,请参阅https://developer.android.com/topic/libraries/view-binding

e3bfsja2

e3bfsja24#

我在跟着一个教程,它是超级简单的,为什么他们把它变成这个烂摊子?对我来说已经够难的了。。我想哭,我现在明白的一点点都是无用的回到0…

相关问题