ChipGroup - setOnCheckedStateChangeListener语言 - not triggerrin



我试图在一个项目中使用ChipGroup。我正在手动添加芯片项目。它工作得很好。但当我试图点击它时,setOnCheckedStateChangeListener没有触发。我做错了什么?如何解决这个问题?

Mainactivity Layout

<?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">

<com.google.android.material.chip.ChipGroup
android:id="@+id/chipGroup"
android:layout_width="0dp"
style="@style/choiceChip"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:selectionRequired="true"
app:singleLine="true"
app:singleSelection="true">
</com.google.android.material.chip.ChipGroup>

</androidx.constraintlayout.widget.ConstraintLayout>

MainActivity Class

编辑为列表

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Toast
import com.google.android.material.chip.Chip
import com.yasinsenel.chipdeneme.databinding.ActivityMainBinding
class MainActivity : AppCompatActivity() {
private lateinit var binding : ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
val chipList : ArrayList<String> = arrayListOf()
chipList.add("A")
chipList.add("B")
chipList.add("C")

chipList.forEachIndexed { index, s ->
val chip = Chip(this)
chip.text = s
chip.id = index
binding.chipGroup.addView(chip)
}

binding.apply {
chipGroup.setOnCheckedStateChangeListener { group, checkedIds ->
Toast.makeText(this@MainActivity,"Clicked",Toast.LENGTH_SHORT).show()
}
}
}
}
``
Dependency
``

{依赖关系

implementation 'com.google.android.material:material:1.8.0'

添加到checkGroup时应该设置芯片Checkable。
使用这一行

chip.isCheckable = true