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()
}
我正在尝试获取用户选择的单选按钮,并将他们的选择与正确答案进行比较。 例如,您有 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()
}