You need to enable JavaScript to run this app. Android QuizApp点击提交后禁止修改答案及禁用其他按钮问题咨询
优惠活动
大模型
产品
解决方案
定价
更多

Android QuizApp点击提交后禁止修改答案及禁用其他按钮问题咨询

实现方案

1. 新增全局状态标记

首先在Activity类中添加一个布尔变量,用来标记当前题目是否已经提交答案:

// 新增全局变量,标记当前题是否已提交答案
private var isAnswerSubmitted = false

2. 拦截已提交后的选项点击事件

修改onClick方法中四个选项的点击逻辑,提交后直接拦截点击,不响应选择操作:

override fun onClick(v: View?) {
    when (v?.id) {
        R.id.tv_option_one -> {
            // 已提交答案就不响应选项点击
            if(isAnswerSubmitted) return
            selectedOptionView(tv_option_one, 1)
        }
        R.id.tv_option_two -> {
            if(isAnswerSubmitted) return
            selectedOptionView(tv_option_two, 2)
        }
        R.id.tv_option_three -> {
            if(isAnswerSubmitted) return
            selectedOptionView(tv_option_three, 3)
        }
        R.id.tv_option_four -> {
            if(isAnswerSubmitted) return
            selectedOptionView(tv_option_four, 4)
        }
        R.id.btn_submit -> {
            if (mSelectedOptionPosition == 0) {
                mCurrentPosition++
                when {
                    mCurrentPosition <= mQuestionsList!!.size -> {
                        setQuestion()
                    }
                    else -> {
                        val intent =
                            Intent(this, ResultActivity::class.java)
                        intent.putExtra(Constants.USER_NAME, mUserName)
                        intent.putExtra(Constants.CORRECT_ANSWERS, mCorrectAnswers)
                        intent.putExtra(Constants.TOTAL_QUESTIONS, mQuestionsList!!.size)
                        startActivity(intent)
                        finish()
                    }
                }
            } else {
                val question = mQuestionsList?.get(mCurrentPosition - 1)
                if (question!!.correctAnswer != mSelectedOptionPosition) {
                    answerView(mSelectedOptionPosition, R.drawable.wrong_option_border_bg)
                }
                else {
                    mCorrectAnswers++
                }
                answerView(question.correctAnswer, R.drawable.correct_option_border_bg)
                if (mCurrentPosition == mQuestionsList!!.size) {
                    btn_submit.text = "FINISH"
                } else {
                    btn_submit.text = "GO TO NEXT QUESTION"
                }
                mSelectedOptionPosition = 0
                // 标记当前题已提交,禁止后续修改选项
                isAnswerSubmitted = true
            }
        }
    }
}

3. 新题加载时重置状态

修改setQuestion方法,每次加载新题的时候重置提交状态,保证新题可以正常选择选项:

private fun setQuestion() {
    val question = mQuestionsList!!.get(mCurrentPosition - 1)
    defaultOptionsView()
    // 重置提交状态,新题允许选择选项
    isAnswerSubmitted = false
    if (mCurrentPosition == mQuestionsList!!.size) {
        btn_submit.text = "FINISH"
    } else {
        btn_submit.text = "SUBMIT"
    }
    progressBar.progress = mCurrentPosition
    tv_progress.text = "$mCurrentPosition" + "/" + progressBar.max
    tv_question.text = question.question
    iv_image.setImageResource(question.image)
    tv_option_one.text = question.optionOne
    tv_option_two.text = question.optionTwo
    tv_option_three.text = question.optionThree
    tv_option_four.text = question.optionFour
}

可选优化

如果需要更明显的不可交互提示,可以在标记答案已提交时给所有选项设置isClickable = false、调低透明度,加载新题时再恢复属性,视觉上更直观提示用户选项不可操作。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 20:48:03