代码之家  ›  专栏  ›  技术社区  ›  user8924911

Android测验应用程序中的单选按钮

  •  1
  • user8924911  · 技术社区  · 7 年前

    我正在为Android开发测验应用程序,我在RadioGroup中使用单选按钮。我想在有人检查正确答案时实现这一点(在这种情况下 id/krzyzyk )分数将增加一分。我编写了以下代码:

    int score = 2;
    
    public void onRadioButtonClicked(View view) {
        RadioButton radiobutton1 = (RadioButton) findViewById(R.id.krzyzyk);
    
        if (radiobutton1.isChecked()) {
            score = score + 1;
        }
    }
    

    它可以工作,但当我运行应用程序,点击另一个单选按钮,然后再次 id/krzyzyk 分数将再次更新。你能帮我解决这个问题吗?

    3 回复  |  直到 7 年前
        1
  •  1
  •   Diego Lo    7 年前

    当用户点击单选按钮时,您的代码将始终增加分数 krzyzyk .

    如果所选单选按钮正确,我建议您提交答案并转到下一个问题,增加分数。

    将代码更改为:

    public void onRadioButtonClicked(View view) {
        // Is the button now checked?
        boolean checked = ((RadioButton) view).isChecked();
    
        // Check which radio button was clicked
        switch(view.getId()) {
            case R.id.correct_answer: // this is id/krzyzyk
                if (checked)
                    score++;
                    // Go to next question
                break;
            case R.id.wrong_answer:
                if (checked)
                    // Go to next question.
                break;
        }
    }
    
        2
  •  0
  •   Stephen    7 年前

    您可以通过以下方式禁用RadioButton或RadioGroup: setEnabled(boolean) .

    例如,您可以禁用由选择的单选按钮

    radiobutton1.setEnabled(false);
    

    我建议在这一点上禁用所有单选按钮,以防止用户更改其答案。你可以通过打电话一次完成这一切 setEnabled(布尔) 在广播组。

    RadioGroup group = (RadioGroup) findViewById(R.id.myRadioGroup);
    group.setEnabled(false);
    
        3
  •  0
  •   Stephen    7 年前

    你们已经考虑过你们测试的逻辑,当然分数会增加,因为当你们选择正确的答案并在监听器中勾选这个答案(这个方法每次点击按钮都会调用),这将是错误的结果,也许你们可以试着在点击按钮(下一步,勾选)或用问题滑动片段时进行isChecked,或者你们可以使用一些变量,比如错误正确指示器的标志,

    int m_rightAnswer =0;
    ...
    public void onRadioButtonClicked(View view) {
       RadioButton radiobutton1 = (RadioButton) findViewById(R.id.krzyzyk);
    
        if (radiobutton1.isChecked() && m_rightAnswer==0){
            score = score + 1; m_rightAnswer=1 }
                  }
    

    它只工作一次,当你们点击正确的答案,当你们点击任何单选按钮并返回右侧时,你们的分数不会改变,但它没有逻辑