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

测验应用(Quiz App)答对一题后分数停止增长的修复方案咨询

问题分析与解决方案

我一眼就瞅出问题所在啦——你那个clicked变量在第一次答对题目后被设为false,但切换到下一题的时候完全没把它重置回true,导致后续哪怕答对了新题目,也触发不了分数增加的逻辑。

具体修改方案

核心就是在切换到新题目时,把允许加分的标记重置。直接给你改好关键代码:

btnNext.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        radioGroup=(RadioGroup)findViewById(R.id.radioGroup);
        // 先处理当前题目的得分判断
        try {
            // 先判断用户有没有选选项,避免空指针
            if(radioGroup.getCheckedRadioButtonId() != -1){
                getClickedButton=(RadioButton)findViewById(radioGroup.getCheckedRadioButtonId());
                if(getClickedButton.getText().equals(answer) && clicked){
                    score++;
                    updateScore(score);
                    clicked=false; // 当前题目答对后标记,防止重复点击加分
                }
            }
        }catch (Exception e){
            Toast.makeText(MainActivity.this, e.getMessage(), Toast.LENGTH_SHORT).show();
        }
        
        // 切换题目逻辑
        if (questionNumber < totalQuestion) {
            updateQuestion();
            radioGroup.clearCheck();
            clicked = true; // 重点!新题目加载后重置标记,允许下一题答对加分
        } else {
            resultIntent();
        }
    }
});

额外优化小建议

  • 可以把全局的getClickedButton去掉,每次在点击事件里临时获取就行,减少不必要的全局变量
  • 增加radioGroup.getCheckedRadioButtonId() != -1的判断,避免用户没选选项就点Next导致的异常
  • 如果题目数量多,还可以用一个数组boolean[] isQuestionScored来记录每个题目是否已经得分,逻辑会更清晰

这样改完后,每切换到新题目,clicked就会变回true,答对时能正常加分,而且同一题目多次点正确选项也不会重复加分,完全符合你的需求~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:22:59