我正在实施一个测验,这里有一个按钮的方法
public void playquiz(final int arrayIndex) {
setContentView(R.layout.quiz);
next = (Button) findViewById(R.id.nextBtn);
next.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (arrayIndex == TourDescription.currentTour.getTriviaArray().size()) {
int totalpoints = correctAnswerCount*10;
Intent scoreintent = new Intent(TriviaQuiz.this,ScoreBoard.class);
startActivity(scoreintent);
}
else
{
playquiz(arrayIndex+1);
}
}
我想要做的是,在方法内部我正在加载另一个布局并为该布局中的按钮分配onclick。
现在我的问题是,我最初获得的arrayIndex,我必须在点击下一个按钮时更新它,并根据此我还有一些其他条件要检查。
但如果我喜欢playquiz(arrayIndex + 1);,它会要求我将arrayIndex声明为final,为什么会这样?
即便如此,它的表现并不像预期的那样。
onClick中的if(arrayIndex == TourDescription.currentTour.getTriviaArray()。size())没有发生
有什么建议吗?
答案 0 :(得分:1)
But if I do like playquiz(arrayIndex+1);, it asks me to declare the arrayIndex as final, why is this?
这是因为你在另一个类中使用它 - OnClickListener()和arrayIndex可能是一个局部变量。有两种方法来解决这个问题。
您的类应实现OnClickListener并覆盖OnClick方法,您必须在其中包含您的代码。
The if (arrayIndex == TourDescription.currentTour.getTriviaArray().size()) inside onClick is not happening
我不确定你是否在这里提供了足够的代码,但只是通过查看它我看不到arrayIndex被递增,因此它永远不会到达TourDescription.currentTour.getTriviaArray()。size()。你需要增加arrayIndex 它在else子句中。