使用单选按钮在Android中制作测验应用程序

时间:2017-02-03 00:43:41

标签: java android xml

我正在为10个问题制作一款适用于Android的Quizz应用程序,所有这些应用程序都带有4个单选按钮,最后一个按钮用于显示分数。问题是,当我选择正确答案时,它会给出5分,但如果我检查另一个单选按钮,则分数将保持为5,如果我再次按下它,则总和5.对此进行编码的最佳方法是什么?

以下是代码:

package com.example.android.quizproject;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.RadioButton;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

int points = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

public void firstRadioButtons (View view){
    boolean checked = ((RadioButton) view).isChecked();
    switch (view.getId()) {
        case R.id.questionOneA:
            if (checked)
                points += 0;
                break;
        case R.id.questionOneB:
            if (checked)
                points += 0;
                break;
        case R.id.questionOneC:
            if (checked)
                points += 5;
                break;
        case R.id.questionOneD:
            if (checked)
                points += 0;
                break;
    }

}

public void showScore (View view) {
    TextView scoreTextView = (TextView) findViewById(R.id.score);
    scoreTextView.setText(" " + points);
}

}

2 个答案:

答案 0 :(得分:0)

您可以使用计数器变量来检查问题是否已被回答。将部分代码修改为

public void firstRadioButtons (View view){
    boolean checked = ((RadioButton) view).isChecked();
    int count=0;
    switch (view.getId()) {
        case R.id.questionOneA:
            if (checked)
                {
            if(count!=0){
                points-=5;
                count=0;
                }
                }
                break;
        case R.id.questionOneB:
            if (checked)
                {
            if(count!=0){
                points-=5;
                count=0;
                }
                }
                break;
        case R.id.questionOneC:
            if (checked){
                points += 5;
                count+=1;}
                break;
        case R.id.questionOneD:
            if (checked)
                {
            if(count!=0){
                points-=5;
                count=0;
                }
                }
                break;
    }

}

答案 1 :(得分:0)

实际上,你描述它的方式,它的常识。如果你单击一次正确的答案,它会将它设置为5,但如果你按任何其他答案,它将添加0。

一般情况下,它会打印出5,因为你得到的答案一次正确,其他问题设置为0.这里真的没有什么可以解决的,这是你的常识变量不会读取5.除了Abhriya说,你可以像(她/他)的例子中那样添加一个计数器增量值。