我正在尝试使用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
}
答案 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;过程..