我有两个单选组(组1和组2),分别包含3个单选按钮。我用这个准则把左右两列分开,各占一半。由于两个无线组是分开的,当用户单击组1时,我希望清除组2中的选定项(如果有)。任何想法都可以做到,因为我是由Kotlin编写的,所以我在stackoverflow ConstraintLayout、RadioGroup和RadioButton RadioGroup的两列中找到了一些示例,其中两列有十个单选按钮,因为该示例是用JAVA编写的,但我无法在Kotlin代码中应用。我是Kotlin和Java的新手,我正在使用Android Studio的“导航抽屉活动”,并将代码应用到“Fragment.kt”中,有人对此有想法吗?谢谢
这是我在MainA中的静态编程语言编码ctivity.ktval val listener2--
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")
}
}
}
}
private lateinit var radioGroup1: RadioGroup
private lateinit var radioGroup2: RadioGroup
private var radioGroupBlock: Boolean = false
...
radioGroup1 = view.findViewById(R.id.radioGroup_1)
radioGroup2 = view.findViewById(R.id.radioGroup_2)
...
radioGroup1.setOnCheckedChangeListener({ group, checkedId ->
if (radioGroupBlock)
return@setOnCheckedChangeListener
val radio: RadioButton = view.findViewById(checkedId)
toast(" On checked change : ${radio.text}")
var id: Int = radioGroup2.checkedRadioButtonId
if (id!=-1){
radioGroupBlock = true
radioGroup2.clearCheck()
radioGroupBlock = false
}
})
radioGroup2.setOnCheckedChangeListener({ group, checkedId ->
if (radioGroupBlock)
return@setOnCheckedChangeListener
val radio: RadioButton = view.findViewById(checkedId)
toast(" On checked change : ${radio.text}")
var id: Int = radioGroup1.checkedRadioButtonId
if (id!=-1){
radioGroupBlock = true
radioGroup1.clearCheck()
radioGroupBlock = false
}
})
您可以执行以下操作:
首先初始化两个无线电组,如下所示:
val rg1 = findViewById(R.id.radioGroup1) as RadioGroup
val rg2 = findViewById(R.id.radioGroup2) as RadioGroup
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);
然后创建onCheckChangeListener:
private val listener1 = object : OnCheckedChangeListener() {
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")
}
}
只需在更改侦听器中清除:
radioGroup1.setOnCheckedChangeListener { _, _ ->
radioGroup2.clearCheck()
}
如何在 Kotlin 中制作 2D Int 数组?我正在尝试将此代码转换为 Kotlin: 这是我尝试过的一个尝试,第一个2D阵列不起作用,但我让1D阵列起作用了:
我试图用OkHttp和Cucumber在静态编程语言中设置一个Spring启动项目,并且在运行Cucumber任务时遇到以下错误。如何修复? 还有build gradle kts片段 我看到了这个错误https://github.com/square/okio/issues/647看起来可能是它,并修复了这个build.gradle,我如何将其翻译为kotlinbuild.gradle.kts?
这两个代码片段有什么区别?以及如何决定使用哪一个? 和 有了这两个代码,我可以像这样通过索引访问它
如图所示,https://stackoverflow.com/a/16639438/8949356,在Java中,当声明的类是公共类时,可以重写其函数 但是我想知道如何用静态编程语言编写完全相同的代码,我已经尝试了很多,但没有找到任何关于这个主题的东西。我可以在Java中去做这件事,但我的其余代码是用静态编程语言编写的,而且我不能一直带着这种怀疑;静态编程语言对我来说是一个很好的工具,我想学习它。
我的名单如下{(“a”,1),(“b”,2),(“c”,3),(“a”,4)} 我想将其转换为如下列表映射{("a"(1,4)),("b",(2)),("c",(3))} 也就是说,对于a,我们有一个1和4的列表,因为键是相同的。 Kotlin中如何将列表转换为地图中的答案?只显示唯一的价值(而不是像我一样的重复)。 我在Kotlin尝试了 但似乎不起作用。我怎样才能在 Kotlin 中做到这一点
为了描述Gradle构建脚本,我们可以通过< code>build.gradle.kts文件使用Kotlin。在< code>dependencies和build 部分全局定义要使用的Kotlin版本是一个常见的问题(在给定的情况下使用不同的版本是相当罕见的)。 请考虑以下代码 (Gradle 4.3.1): 如您所见,kotlin(在本例中为1.2.30)定义了两次:和,它们通常没有区别。由于D