You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android中给随机按钮设置正确答案的实现方法咨询

算术题选项按钮绑定实现方案

完全可以使用tag属性实现该需求,这是Android开发中轻量绑定自定义属性的常规方案,无需额外自定义控件即可实现正确答案的标记。


实现步骤

1. 生成并打乱选项数据

先计算算术题的正确答案,再生成3个不与正确答案重复的干扰值,合并后打乱顺序保证正确答案位置随机:

// 替换为实际算术题的计算逻辑
val correctAnswer = 3 + 4
val distractors = mutableListOf<Int>()
// 生成3个不重复的干扰值,数值范围可根据题目难度调整
while (distractors.size < 3) {
    val randomNum = (0..20).random()
    if (randomNum != correctAnswer && !distractors.contains(randomNum)) {
        distractors.add(randomNum)
    }
}
// 合并所有选项并打乱顺序
val optionList = (distractors + correctAnswer).shuffled()

2. 给按钮赋值并绑定tag

提前把4个选项按钮存入列表,遍历赋值的同时,给对应正确答案的按钮的tag设置特殊标记:

// 提前初始化4个按钮的引用并存入列表
val btnList = listOf(optionBtn1, optionBtn2, optionBtn3, optionBtn4)

optionList.forEachIndexed { index, optionValue ->
    val currentBtn = btnList[index]
    currentBtn.text = optionValue.toString()
    // 正确答案的按钮tag设为true,其余设为false,也可以直接存正确答案的数值
    currentBtn.tag = optionValue == correctAnswer
}

3. 点击判断逻辑

用户点击按钮时直接读取tag值即可快速判断是否选对:

btnList.forEach { btn ->
    btn.setOnClickListener { view ->
        val isRight = view.tag as Boolean
        if (isRight) {
            // 回答正确的业务逻辑
        } else {
            // 回答错误的业务逻辑
        }
    }
}

补充说明

  • 如果使用Java开发,逻辑完全一致,调用View.setTag()和View.getTag()方法即可完成标记的存取
  • 除了存布尔值,你也可以直接给所有按钮的tag存对应的选项值,点击时和全局存储的正确答案做比对,两种实现都可行

内容的提问来源于stack exchange,提问作者irenavox

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 14:09:02