两个按钮都在 MaterialToggleButton Android 中选中,而只有一个应该
Both buttons are checked in MaterialToggleButton Android while only one should
我有一个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
每当我从“是”切换到“否”时。这不应该只给我选中的按钮而不是未选中的按钮吗?
如有任何帮助,我们将不胜感激。
您可以通过编程方式检查按钮。
MaterialButtonToggleGroup 提供了另一种方法来检查、取消选中和清除选中的按钮状态。
toggleGroup.check(R.id.bYes) // Checks a specific button
toggleGroup.uncheck(R.id. bYes) // Unchecks a specific button
toggleGroup.clearChecked()
您必须使用 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")
}
}
}
我有一个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
每当我从“是”切换到“否”时。这不应该只给我选中的按钮而不是未选中的按钮吗?
如有任何帮助,我们将不胜感激。
您可以通过编程方式检查按钮。 MaterialButtonToggleGroup 提供了另一种方法来检查、取消选中和清除选中的按钮状态。
toggleGroup.check(R.id.bYes) // Checks a specific button
toggleGroup.uncheck(R.id. bYes) // Unchecks a specific button
toggleGroup.clearChecked()
您必须使用 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")
}
}
}