kotlin - 多个按钮的 OnClickListener 不起作用
问题描述
我在这里和谷歌上搜索了一个解决方案,但它对我不起作用,我不明白为什么。我在这个解决方案中做了所有的事情:Multiple OnClickListener in Kotlin
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/btnP1"
android:layout_width="60dp"
android:layout_height="54dp"
android:layout_marginTop="200dp"
android:fontFamily="sans-serif-medium"
android:shape="rectangle"
android:text="1"
android:textColor="#000000"
android:textSize="18sp"
android:textStyle="bold"
app:backgroundTint="#98BFD1"
app:layout_constraintEnd_toStartOf="@+id/btnP2"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/txtDart1"
tools:text="1" />
<Button
android:id="@+id/btnP2"
android:layout_width="60dp"
android:layout_height="54dp"
android:layout_marginTop="334dp"
android:shape="rectangle"
android:text="2"
android:textColor="#000000"
android:textSize="18sp"
android:textStyle="bold"
app:backgroundTint="#98BFD1"
app:layout_constraintEnd_toStartOf="@+id/btnP3"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/btnP1"
app:layout_constraintTop_toTopOf="parent"
tools:text="2" />
</androidx.constraintlayout.widget.ConstraintLayout>
MainActivity.kt:
package com.example.test
import android.os.Bundle
import android.view.View
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity(), View.OnClickListener {
private var toast: Toast? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
btnP1.setOnClickListener(this)
btnP2.setOnClickListener(this)
}
override fun onClick(view: View?)
{
when ( view!!.id)
{
TODO()
}
}
private fun myToast(string: String)
{
toast = Toast.makeText(this,string,Toast.LENGTH_SHORT)
toast?.show()
}
}
问题: btnP1.setOnClickListener(this)
和btnP2.setOnClickListener(this)
-> btnP1 和 btnP2 总是红色 -> “未解析的引用”
为什么它适用于所有人但不适用于我的情况?
谢谢!
解决方案
在 Build.gardle(app)
添加
plugins {
id 'kotlin-android-extensions'
}
或者
apply plugin: 'kotlin-android-extensions'
取决于你的版本。然后同步
之后,您将能够在不使用 findViewById 的情况下使用您的按钮或其他任何东西
如果你仍然没有找到它。确保在您的 KotlinFile 中导入它 ***通常它会在您键入 id 名称后导入 auto ,就像您的情况一样 btnP1 ***
import kotlinx.android.synthetic.main.YOUR_XML_FILE_NAME.* (Don't forget *)
例子
import kotlinx.android.synthetic.main.activity_main.*
推荐阅读
- spring - Spring - 在我自己的用于验证的注释中返回我的 onw 异常
- qt - QUdpSocket setMulticastInterface 不起作用
- laravel - ubuntu + nginx + laravel vue-material-dashboard
- python - TypeError:'int'对象在while循环内不可下标
- vue.js - @nuxt/auth 我可以使用参数发送刷新令牌吗?
- telnet - PuTTY telnet 选项 63 (0x32),应该是什么?
- python - Twitter API - 使用 Python 创建侦听器机器人并遵守指南
- opentk - OpenTK 4 或 5 是否支持原始输入?
- c# - MailKit ConnectAsync 在没有互联网连接的情况下冻结
- azure-devops - 在 AzureDevOps 的项目文件夹中运行 bash 脚本