我有一个像这样的MaterialButtonToggleGroup
<com.google.android.material.button.MaterialButtonToggleGroup
android:id="@+id/toggleGroup"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
app:singleSelection="true">
<com.google.android.material.button.MaterialButton
android:id="@+id/bYes"
style="@style/Widget.MaterialComponents.Button.OutlinedButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="YES" />
<com.google.android.material.button.MaterialButton
android:id="@+id/bNo"
style="@style/Widget.MaterialComponents.Button.OutlinedButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="NO" />
</com.google.android.material.button.MaterialButtonToggleGroup>
我正在聆听发生在这个ToggleGroup上的这样的变化
toggleGroup.addOnButtonCheckedListener { group, checkedId, isChecked ->
// println("checkedId ${checkedId} $isChecked")
if (checkedId == R.id.bYes){
println("yes is checked "+1)
}else{
println("no is checked "+0)
}
}
但发生的是,当我从“是”切换到“否”时,两个按钮都会被检查。我要拿到像这样的日志
I/System.out: yes is checked 1
I/System.out: no is checked 0
每当我从“是”改为“不是”的时候。这不是应该只给我检查的按钮,而不是未检查的按钮吗?
任何帮助都将不胜感激。
发布于 2020-03-27 09:19:38
您必须使用isChecked
标志过滤选中的按钮:
toggleGroup.addOnButtonCheckedListener { group, checkedId, isChecked ->
if(isChecked) {
when(checkedId) {
R.id.bYes -> println("YES is checked")
R.id.bNo -> println("NO is checked")
}
} else {
when(checkedId) {
R.id.bYes -> println("YES is not checked")
R.id.bNo -> println("NO is not checked")
}
}
}
发布于 2020-03-27 08:40:30
您可以以编程方式检查该按钮。MaterialButtonToggleGroup提供了另一种检查、取消检查和清除选中按钮状态的方法。
toggleGroup.check(R.id.bYes) // Checks a specific button
toggleGroup.uncheck(R.id. bYes) // Unchecks a specific button
toggleGroup.clearChecked()
https://stackoverflow.com/questions/60882197
复制相似问题