gpt4 book ai didi

android - onClick 函数不适用于 View Binding Android Kotlin

转载 作者:行者123 更新时间:2023-12-05 00:03:31 31 4
gpt4 key购买 nike

我是 kotlin 的初学者,正在尝试开发示例项目。我尝试使用 View.OnClickListener 接口(interface)来获取在我的布局中单击的任何 View 的 ID。我的布局中有 9 个按钮(井字游戏),但是当代码运行时,单击任何按钮都没有任何 react ,甚至没有显示任何错误。

class MainActivity : AppCompatActivity(), View.OnClickListener {

private lateinit var binding : ActivityMainBinding
var active = 1
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)

}

override fun onClick(view: View?) {
val button = view as Button
button.setBackgroundColor(Color.parseColor("#ffffff"))
if(active == 1) {
button.text = "X"
button.setTextColor(Color.parseColor("#FF6200EE"))
button.textSize = 20f
button.isEnabled = false
active = 0
}
else {
button.text = "O"
button.setTextColor(Color.parseColor("#FF6200EE"))
button.textSize = 20f
button.isEnabled = false
active = 1
}
}
}
xml文件
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
tools:context=".MainActivity"
android:background="#F6F6F6">

<TableLayout
android:id="@+id/tlTableLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent">

<TableRow
android:id="@+id/trRow1"
android:layout_width="wrap_content"
android:layout_height="wrap_content">

<Button
android:id="@+id/bnOne"
android:layout_width="40pt"
android:layout_height="40pt"
android:layout_marginRight="5pt"/>

<Button
android:id="@+id/bnTwo"
android:layout_width="40pt"
android:layout_height="40pt"
android:layout_marginRight="5pt"/>

<Button
android:id="@+id/bnThree"
android:layout_width="40pt"
android:layout_height="40pt"/>

</TableRow>

<TableRow
android:id="@+id/trRow2"
android:layout_width="wrap_content"
android:layout_height="wrap_content">

<Button
android:id="@+id/bnFour"
android:layout_width="40pt"
android:layout_height="40pt"
android:layout_marginRight="5pt"/>

<Button
android:id="@+id/bnFive"
android:layout_width="40pt"
android:layout_height="40pt"
android:layout_marginRight="5pt"/>

<Button
android:id="@+id/bnSix"
android:layout_width="40pt"
android:layout_height="40pt"/>

</TableRow>

<TableRow
android:id="@+id/trRow3"
android:layout_width="wrap_content"
android:layout_height="wrap_content">

<Button
android:id="@+id/bnSeven"
android:layout_width="40pt"
android:layout_height="40pt"
android:layout_marginRight="5pt"/>

<Button
android:id="@+id/bnEight"
android:layout_width="40pt"
android:layout_height="40pt"
android:layout_marginRight="5pt"/>

<Button
android:id="@+id/bnNine"
android:layout_width="40pt"
android:layout_height="40pt"/>

</TableRow>

</TableLayout>

</androidx.constraintlayout.widget.ConstraintLayout>

最佳答案

您没有使用 Acitivty View.OnClickListener 附加 buttonClickListener 的实例
为此,您需要添加行

button.setOnClickListener(this)
下面是如何使用按钮实例附加 onClick 监听器的实现
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)

binding.bnOne.setOnClickListener(this)
binding.bnTwo.setOnClickListener(this)
................
................
................
binding.bnNine.setOnClickListener(this)

}

关于android - onClick 函数不适用于 View Binding Android Kotlin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66209341/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com