首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >这两个按钮都是在MaterialToggleButton Android中签入的,而只有一个应该

这两个按钮都是在MaterialToggleButton Android中签入的,而只有一个应该
EN

Stack Overflow用户
提问于 2020-03-27 08:18:28
回答 2查看 300关注 0票数 1

我有一个像这样的MaterialButtonToggleGroup

代码语言:javascript
运行
复制
<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上的这样的变化

代码语言:javascript
运行
复制
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)
            }
        }

但发生的是,当我从“是”切换到“否”时,两个按钮都会被检查。我要拿到像这样的日志

代码语言:javascript
运行
复制
I/System.out: yes is checked 1
I/System.out: no is checked 0

每当我从“是”改为“不是”的时候。这不是应该只给我检查的按钮,而不是未检查的按钮吗?

任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-03-27 09:19:38

您必须使用isChecked标志过滤选中的按钮:

代码语言:javascript
运行
复制
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")
        }
    }
}
票数 0
EN

Stack Overflow用户

发布于 2020-03-27 08:40:30

您可以以编程方式检查该按钮。MaterialButtonToggleGroup提供了另一种检查、取消检查和清除选中按钮状态的方法。

代码语言:javascript
运行
复制
toggleGroup.check(R.id.bYes) // Checks a specific button
toggleGroup.uncheck(R.id. bYes) // Unchecks a specific button
toggleGroup.clearChecked()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60882197

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档