gpt4 book ai didi

android - 在 Kotlin 中有两列的 RadioGroup

转载 作者:行者123 更新时间:2023-12-02 12:52:46 29 4
gpt4 key购买 nike

我有两个单选组(组 1 和组 2)并分别包含 3 个单选按钮。
我使用该指南将左右列与 50% 50% 分开。
由于两个单选组是分开的,当用户单击组 1 时,如果有的话,我想清除组 2 中的选择。
任何想法,因为我是由 Kotlin 编写的,所以我在 stackoverflow 中找到了一些示例
ConstraintLayout, RadioGroup and two columns of RadioButton
RadioGroup with two columns which have ten RadioButtons
因为示例是用 JAVA 编写的,但我不能在我的 Kotlin 代码中应用。
我是 Kotlin 和 Java 的新手,我正在使用带有“抽屉导航 Activity ”的 Android Studio,并在“Fragment.kt”中应用编码
有人对此有想法吗?谢谢!

这是我在 MainActivity.kt 中的 Kotlin 编码,在 val val listener2--> rg1.setOnCheckedChangeListener(listener1) 中有 ex 异常
“类型检查遇到了递归问题......”

package com.example.pain_testing

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.RadioGroup
import android.util.Log


class MainActivity : AppCompatActivity() {

val rg1 = findViewById(R.id.radioGroup1) as RadioGroup
val rg2 = findViewById(R.id.radioGroup2) as RadioGroup

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
rg1.clearCheck(); // this is so we can start fresh, with no selection on both RadioGroups
rg2.clearCheck();
rg1.setOnCheckedChangeListener(listener1); //apply onCheckChangeListener
rg2.setOnCheckedChangeListener(listener2);
}

private val listener1 = object : RadioGroup.OnCheckedChangeListener {

override fun onCheckedChanged(group: RadioGroup, checkedId: Int) {
if (checkedId != -1) {
rg2.setOnCheckedChangeListener(null) // remove the listener before clearing so we don't throw that stackoverflow exception(like Vladimir Volodin pointed out)
rg2.clearCheck() // clear the second RadioGroup!
rg2.setOnCheckedChangeListener(listener2) //reset the listener
Log.e("XXX2", "do the work")
}
}
}

private val listener2 = object : RadioGroup.OnCheckedChangeListener {

override fun onCheckedChanged(group: RadioGroup, checkedId: Int) {
if (checkedId != -1) {
rg1.setOnCheckedChangeListener(null)
rg1.clearCheck()
rg1.setOnCheckedChangeListener(listener1)
Log.e("XXX2", "do the work")
}
}
}

}

最佳答案

只需在更改监听器中清除:

radioGroup1.setOnCheckedChangeListener { _, _ -> 
radioGroup2.clearCheck()
}

关于android - 在 Kotlin 中有两列的 RadioGroup,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57740519/

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