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

安卓Quiz应用RadioButton选中失效及题目不显示问题求助

安卓Quiz应用修改选项后异常的排查方案

一、先检查Question2.java的数据结构与初始化逻辑

  • 确认类的属性与构造方法是否匹配,避免修改选项后参数顺序错乱导致题目/选项赋值错误:
    public class Question2 {
        private String questionText;
        private String option1;
        private String option2;
        private String option3;
        private int correctAnswerIndex; // 用索引存正确答案,比硬编码文本更可靠
    
        // 构造方法要保证参数顺序对应:题目→选项1→选项2→选项3→正确答案索引
        public Question2(String questionText, String option1, String option2, String option3, int correctAnswerIndex) {
            this.questionText = questionText;
            this.option1 = option1;
            this.option2 = option2;
            this.option3 = option3;
            this.correctAnswerIndex = correctAnswerIndex;
        }
    
        // 检查getter方法是否正确返回对应属性,比如getQuestionText()有没有写错变量名
        public String getQuestionText() { return questionText; }
        public String getOption1() { return option1; }
        // ...其他选项的getter方法
    }
    
  • 核对题目列表初始化代码,确认修改选项后,每个Question2实例的questionText没有被赋值为空或错误文本,否则会导致题目不显示。

二、排查quizmateri2Activity的核心逻辑

1. 题目与选项的绑定是否正确

  • 检查题目文本的设置代码,确保调用了setText且currentQuestion是有效实例:
    TextView questionTv = findViewById(R.id.question_text_view);
    questionTv.setText(currentQuestion.getQuestionText());
    
  • 检查RadioButton的文本绑定,确认每个选项都对应到正确的控件:
    RadioButton opt1Btn = findViewById(R.id.option1_radio_btn);
    opt1Btn.setText(currentQuestion.getOption1());
    RadioButton opt2Btn = findViewById(R.id.option2_radio_btn);
    opt2Btn.setText(currentQuestion.getOption2());
    RadioButton opt3Btn = findViewById(R.id.option3_radio_btn);
    opt3Btn.setText(currentQuestion.getOption3());
    

2. 选中状态判断逻辑是否失效

最常见的问题是依赖旧的硬编码选项文本判断选中状态,修改选项后直接失效,改成通过控件ID或索引判断:

RadioGroup radioGroup = findViewById(R.id.options_radio_group);
int selectedId = radioGroup.getCheckedRadioButtonId();

// 先判断是否有选中项
if (selectedId == -1) {
    Toast.makeText(this, "请选择答案", Toast.LENGTH_SHORT).show();
    return;
}

// 根据ID映射到选项索引,再对比正确答案
int selectedIndex = -1;
if (selectedId == R.id.option1_radio_btn) {
    selectedIndex = 0;
} else if (selectedId == R.id.option2_radio_btn) {
    selectedIndex = 1;
} else if (selectedId == R.id.option3_radio_btn) {
    selectedIndex = 2;
}

// 对比正确答案索引
if (selectedIndex == currentQuestion.getCorrectAnswerIndex()) {
    // 回答正确逻辑
} else {
    // 回答错误逻辑
}
  • 额外检查:每次加载新题目时,是否调用了radioGroup.clearCheck()清除之前的选中状态,避免状态混乱。

三、检查布局XML的正确性

  • 确认布局中TextView、RadioGroup、RadioButton的ID与代码中findViewById的参数完全一致,ID拼写错误会导致控件绑定失败,出现不显示或无法识别选中状态的问题。
  • 确保所有RadioButton都放在同一个RadioGroup标签内部,否则无法实现互斥选中,也会导致代码无法识别选中项。
  • 检查控件的visibility属性,确认没有被设置为gone或invisible,同时避免被其他控件遮挡导致题目/选项看起来不显示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 21:26:12