Kotlin RadioButton 比较 Android

Kotlin RadioButton comparison Android

我正在尝试获取用户选择的单选按钮,并将他们的选择与正确答案进行比较。 例如,您有 4 个选项,其中 1 个为真,如何比较它们? 下面是我的 Kotlin 代码

var rganswers1 = findViewById<RadioGroup>(R.id.rganswers1)
        var btnSubmit = findViewById<Button>(R.id.btnSubmit)

        btnSubmit.setOnClickListener(View.OnClickListener {
            var rbq1a1 = findViewById<RadioButton>(R.id.rbq1a1)
            var rbq1a2 = findViewById<RadioButton>(R.id.rbq1a2)
            var rbq1a3 = findViewById<RadioButton>(R.id.rbq1a3)
            var rbq1a4 = findViewById<RadioButton>(R.id.rbq1a4)

            var selectedAnswer = rganswers1.checkedRadioButtonId
            if (selectedAnswer.equals(rbq1a3)) {
                Toast.makeText(this, "Correct", Toast.LENGTH_SHORT).show()
            }else{
                Toast.makeText(this, "False", Toast.LENGTH_SHORT).show()
            }

        })

已解决。 只需要使用 when() 语句并给每个答案一个 return 值。

var rganswers1 = findViewById<RadioGroup>(R.id.rganswers1)
        var btnSubmit = findViewById<Button>(R.id.btnSubmit)

        btnSubmit.setOnClickListener(View.OnClickListener {


            var selectedAnswer = rganswers1.checkedRadioButtonId

            when(selectedAnswer){
                R.id.rbq1a1 ->{Toast.makeText(this, "False", Toast.LENGTH_SHORT).show()}
                R.id.rbq1a2 ->{Toast.makeText(this, "False", Toast.LENGTH_SHORT).show()}
                R.id.rbq1a3 ->{Toast.makeText(this, "Correct", Toast.LENGTH_SHORT).show()}
                R.id.rbq1a4 ->{Toast.makeText(this, "False", Toast.LENGTH_SHORT).show()}
            }


        })

您在 if 语句中的问题是将视图 ID 与视图本身进行比较,因此它们永远不会相等。

但是,您不需要列出所有这些单选按钮视图,也不需要详尽无遗的 when 语句。您的整个代码可以简化为:

btnSubmit.setOnClickListener {
    val response = when(rganswers1.checkedRadioButtonId) {
        R.id.rbq1a3 -> "Correct" 
        else -> "false"
    }
    Toast.makeText(this, response, Toast.LENGTH_SHORT).show()
}