一个简单的测验,带有3个按钮ANDROID

时间:2014-05-31 00:55:06

标签: android button

我正在尝试使用3个选项/按钮进行测验,因此当单击一个按钮时,它将通过更改3个按钮的文本和文本视图(显示问题)移动到下一个问题。例如,我有3个问题。我使用for循环来循环所有问题但这个策略似乎不起作用。是否有更好的建议我应该如何实施我的代码?

for(int k=0; k<3;k++){
  t1.setText(Quizz[k].questionText);//textview displays the question
buttons[0].setText(Quizz[k].answers.get(0).getText());
  buttons[1].setText(Quizz[k].answers.get(1).getText());
    buttons[2].setText(Quizz[k].answers.get(2).getText());

//go through three values stored in three buttons
for(int run = 0;run<3;run++){
  if(Quizz[k].answers.get(run).getCorrect()==true){
buttons[k].setOnClickListener(new View.OnClickListener()
      {

   public void onClick(View v)
   {

       //continue to next question
       Toast.makeText(getApplicationContext(), "You just clicked the correct button =)",
       Toast.LENGTH_SHORT).show();


                }
            });

        }
        else {

            buttons[k].setOnClickListener(new View.OnClickListener()
            {


                public void onClick(View v)
                {
               //continue to next question
                Toast.makeText(getApplicationContext(), "Oops that's not right)",
                           Toast.LENGTH_SHORT).show();


                }
            });
            }
        //no matter if correct or wrong, go to the next question



    }

2 个答案:

答案 0 :(得分:1)

我只能告诉你我将如何做到这一点..不确定这是否可以编译,但希望能给你一个想法。使用与onClick()方法链接的xml布局中的三个按钮(即使用onClick()链接到answers(1)的button1)

int currentquestion = 0;

public void updateQuestion() {

    t1.setText(Quizz[currentquestion].questionText);
    buttons[0].setText(Quizz[currentquestion].answers.get(0).getText());
    buttons[1].setText(Quizz[currentquestion].answers.get(1).getText());
    buttons[2].setText(Quizz[currentquestion].answers.get(2).getText());
}

public void answered(View clickedButton, int answer) {
    if (Quizz[currentquestion].answers.get(answer).getCorrect() ) {
        // code to celebrate
    } else {
        // other code
    }

    currentquestion++;
    updateQuestion();
}

答案 1 :(得分:0)

如果您只是在主线程中执行循环,它将从第一个代码直到结束执行,您将只看到结果。

尝试创建在调用时显示问题的方法。你只需听一下这个事件(例如点击)

流程图如下:
显示开始按钮 - &gt;显示问题 - &gt;点击 - &gt;过程 - &gt;显示问题2 - &gt;点击 - &gt;过程..